Олимпиадный тренинг

Задача . E. Number Clicker


Аллен играет в Number Clicker на телефоне.

Он начинает с целого числа \(u\) на экране. Каждую секунду он нажимает одну из трех кнопок:

  1. Изменить \(u \to u+1 \pmod{p}\).
  2. Изменить \(u \to u+p-1 \pmod{p}\).
  3. Изменить \(u \to u^{p-2} \pmod{p}\).

Аллен хочет нажать на кнопки не более 200 раз так, чтобы получить на экране число \(v\). Помогите ему!

Входные данные

Первая строка содержит три целых числа: \(u, v, p\) (\(0 \le u, v \le p-1\), \(3 \le p \le 10^9 + 9\)). Гарантируется, что \(p\) — простое.

Выходные данные

В первой строке выведите одно целое число \(\ell\) — количество нажатий кнопок. Во второй строке выведите целые числа \(c_1, \dots, c_\ell\) — кнопки, которые должен нажать Аллен. Для всех \(1 \le i \le \ell\) должно выполняться \(1 \le c_i \le 3\).

Можно показать, что ответ всегда существует.

Примечание

В первом примере число на экране меняется следующим образом: \(1 \to 2 \to 3\).

Во втором примере число на экране меняется следующим образом: \(3 \to 2\).


Примеры
Входные данныеВыходные данные
1 1 3 5
2
1 1
2 3 2 5
1
3

time 5000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w644
Комментарий учителя