Rimuovere un Singolo Elemento 2

Data una lista di n interi, si richiede di rimuoverne uno in modo che il prodotto della sequenza risultante, preso modulo m, sia uguale a p. Più formalmente, se l’indice dell’elemento rimosso è r:

(a1⋅a2⋅...⋅ar−1⋅ar+1⋅...⋅an)mod  m=p(a_1 \cdot a_2 \cdot ... \cdot a_{r-1} \cdot a_{r+1} \cdot ... \cdot a_n) \mod m = p

Il programma deve trovare l’indice di tale elemento oppure stampare Impossible se non esiste alcun valore che soddisfi la condizione.

Input (Dati in ingresso)

La prima riga dell’input contiene 3 interi n (1 ≤ n ≤ 10510^5), m (1 ≤ m ≤ 10910^9) e p (0 ≤ s < m).

La seconda riga contiene n interi separati da spazio, a1,a2,...,ana_1, a_2, ..., a_n (00 ≤ aia_i ≤ 10910^9).

Output (Dati in uscita)

Se non esiste alcun numero che soddisfi la condizione, il programma deve stampare Impossible; in caso contrario, deve stampare il più piccolo indice di un numero del genere nella lista. L’indicizzazione inizia da 1.

Esempi

Input

Output

3 8 5
5 0 9

2

3 8 5
5 10 7

Impossible

Spiegazione

  1. 5 * 9 = 45 ⇒ 45 mod 8 = 5 ⇒ è possibile rimuovere l’elemento con valore 0 in posizione 2.

  2. Non è possibile rimuovere alcun elemento per far sì che il prodotto dell’array risultante modulo 8 sia 5.

Constraints

Time limit: 1.6 seconds

Memory limit: 512 MB

Output limit: 1 MB