O Jogo do Resto

Vamos jogar um jogo. Dado um número inicial s0s_0 e duas sequências a1,a2,...,ana_1, a_2, ..., a_n e b1,b2,...,bnb_1, b_2, ..., b_n, o objetivo é chegar de s0s_0 até 0 o mais rápido possível. A cada passo, você pode escolher um índice i e aplicar a seguinte operação no número atual:

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

Assim, você obtém o próximo número. É preciso determinar o número mínimo de operações necessárias para levar s0s_0 a 0.

Entrada

A primeira linha da entrada contém 3 inteiros n, m e s0s_0 (0 ≤ n ≤ 10, 0 ≤ m ≤ 100 000, e 0 < s0s_0 < m).

As próximas n linhas contêm um par de inteiros ai,bia_i, b_i (0 ≤ aia_i, bib_i ≤ 10910^9).

Saída

O programa deve imprimir o número mínimo de operações necessário para transformar s0s_0 em 0. Se for impossível chegar a 0, deve ser impresso Impossible.

Exemplos

Entrada

Saída

2 5 1
3 1
2 1

2

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB