Игра с остатком

Давайте поиграем. Пусть у нас есть начальное число s0s_0 и две последовательности a1,a2,...,ana_1, a_2, ..., a_n, b1,b2,...,bnb_1, b_2, ..., b_n. Вам нужно как можно быстрее преобразовать s0s_0 в 0. На каждом шаге вы можете выбрать индекс i и применить следующую операцию к текущему числу:

sj+1=(sj⋅ai+bi)mod  ms_{j+1} = (s_j \cdot a_i + b_i) \mod m

Таким образом вы получите новое число. Нужно найти минимальное количество таких операций, чтобы из s0s_0 перейти к 0.

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

Первая строка содержит три целых числа n, m и s0s_0 (0 ≤ n ≤ 10, 0 ≤ m ≤ 100 000 и 0 < s0s_0 < m).

Каждая из следующих n строк содержит пару целых чисел ai,bia_i, b_i (0 ≤ aia_i, bib_i ≤ 10910^9).

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

Программа должна вывести минимальное количество операций, чтобы из s0s_0 получить 0. Если получить 0 невозможно, нужно вывести Impossible.

Примеры

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

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

2 5 1
3 1
2 1

2

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB