Il Gioco del Resto

Facciamo un gioco. Dato un numero iniziale s0s_0 e due sequenze a1,a2,...,ana_1, a_2, ..., a_n e b1,b2,...,bnb_1, b_2, ..., b_n, l’obiettivo è raggiungere 0 da s0s_0 nel minor numero di mosse possibile. A ogni passo, si può scegliere un indice i ed eseguire la seguente operazione sul numero corrente:

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

In questo modo si ottiene il numero successivo. Bisogna trovare il numero minimo di operazioni richieste per portare s0s_0 a 0.

Ingresso

La prima riga dell’ingresso contiene 3 interi n, m e s0s_0 (0 ≤ n ≤ 10, 0 ≤ m ≤ 100 000 e 0 < s0s_0 < m).

Le successive n righe contengono una coppia di interi ai,bia_i, b_i (0 ≤ aia_i, bib_i ≤ 10910^9).

Uscita

Il programma deve stampare il numero minimo di operazioni per arrivare da s0s_0 a 0. Se non è possibile giungere a 0, il programma deve stampare Impossible.

Esempi

Ingresso

Uscita

2 5 1
3 1
2 1

2

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB