CodeZeroOne
НОИ 2017, Контрола 2
Time Limit: 1s, Memory Limit: 128MiB
Ели дефинира следната безкрайна редица. В началото редицата съдържа единствено цифрата нула. На всяка стъпка момичето копира досегашната редица, заменя нулите с единици, и единиците – с нули, и накрая долепя промененото копие до досегашната редица. Така първите няколко операции изглеждат по следния начин: 0 → 01 → 0110 → 01101001 → 0110100110010110 → 01101001100101101001011001101001 → …. Както можете да забележите, при прилагане на операцията първите символи на редицата се запазват, а дължината ѝ нараства двойно.

Учителката по информатика на Ели беше възхитена от редицата ѝ, и сега е дала за домашно на останалите ученици да имплементират генератор на тази редица. За да провери дали генераторите им са верни, техните програми трябва да могат да отговарят на въпроси от типа "Колко единици има между L-тата и R-тата позиция, включително?".

Можете ли и вие да се справите с този проблем, отговаряйки на N въпроса от този вид?
Вход
На единствен ред на стандартния вход ще бъдат зададени пет цели числа N, F, A, B, и M. С тях можете да генерирате 2 * N цели числа: P1, P2, …, P2N. Първото число P1 e F, а всяко следващо e Pi+1 = (Pi * A + B) % M.

Интервалите, чиито брой единици трябва да намерите, са {[P1, P2], [P3, P4], … [P2N-1, P2N]}. Считаме за валидни интервали и тези, в които първият индекс е по-голям от втория – например [13, 42] е еквивалентен на [42, 13]. Индексирането в редицата започва от нула; тоест първата цифра в редицата (първата нула) е с индекс 0, втората цифра (първата единица) е с индекс 1, и т.н.
Изход
Тъй като изходът може да стане много голям, вместо броя единици във всеки от N-те интервала, от вас се иска да изведете на стандартния изход едно единствено число – XOR-ът на намерените числа.
Ограничения
  • 1 ≤ N ≤ 10,000,000
  • 0 ≤ F, A, B < M ≤ 1,000,000,007
Примерен Вход Примерен Изход
6 5 3 7 31 8
1337666 42 131 55 1000000007 282762915
Първите няколко индекса, които ни интересуват, са: 5, (5 * 3 + 7) % 31 = 22, (22 * 3 + 7) % 31 = 11, (11 * 3 + 7) % 31 = 9, (9 * 3 + 7) % 31 = 3… Всички 2 * 6 = 12 индекса, които дефинират интервалите, са: (5, 22, 11, 9, 3, 16, 24, 17, 27, 26, 23, 14). Самите интервали са: [5, 22], [11, 9], [3, 16], [24, 17], [27, 26], [23, 14]. Броят единици в тези интервали е, съответно, 9, 1, 7, 3, 1, 5. XOR-ът на тези числа е 8, което е и отговорът за този пример.
Мрън!