function solve (marbles, players) {
let scores = {};
let circle = new Deque([0]);
for (let m = 1; m <= marbles; m++) {
if (m % 23) {
circle.rotate(1);
circle.push(m);
} else {
circle.rotate(-7);
scores[m % players] = (scores[m % players] || 0) + m + circle.pop();
circle.rotate(1);
}
}
return Object.entries(scores).reduce(
(max, next) => max > next[1] ? max : next[1], 0);
}