#include <bits/stdc++.h>
using namespace std;
int const PMAX = 10000;
int const NMAX = 10000;
int A, B;
int N, P;
int colors[1 + NMAX];
int moves[1 + PMAX];
int bfs() {
queue<int> q;
q.push(A);
while(true) {
int from = q.front();
q.pop();
if(from == B) {
return moves[from];
}
for(int i = 1; i <= N; i++) {
int to = (from * colors[i]) % P;
if(moves[to] == 0 && to != A) {
moves[to] = moves[from] + 1;
q.push(to);
}
}
}
}
int main() {
cin >> A >> B;
cin >> N >> P;
for(int i = 1; i <= N; i++) {
cin >> colors[i];
}
cout << bfs();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNvbnN0IFBNQVggPSAxMDAwMDsKaW50IGNvbnN0IE5NQVggPSAxMDAwMDsKaW50IEEsIEI7CmludCBOLCBQOwppbnQgY29sb3JzWzEgKyBOTUFYXTsKaW50IG1vdmVzWzEgKyBQTUFYXTsKCmludCBiZnMoKSB7CiAgICBxdWV1ZTxpbnQ+IHE7CiAgICBxLnB1c2goQSk7CiAgICB3aGlsZSh0cnVlKSB7CiAgICAgICAgaW50IGZyb20gPSBxLmZyb250KCk7CiAgICAgICAgcS5wb3AoKTsKICAgICAgICBpZihmcm9tID09IEIpIHsKICAgICAgICAgICAgcmV0dXJuIG1vdmVzW2Zyb21dOwogICAgICAgIH0KICAgICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IE47IGkrKykgewogICAgICAgICAgICBpbnQgdG8gPSAoZnJvbSAqIGNvbG9yc1tpXSkgJSBQOwogICAgICAgICAgICBpZihtb3Zlc1t0b10gPT0gMCAmJiB0byAhPSBBKSB7CiAgICAgICAgICAgICAgICBtb3Zlc1t0b10gPSBtb3Zlc1tmcm9tXSArIDE7CiAgICAgICAgICAgICAgICBxLnB1c2godG8pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBBID4+IEI7CiAgICBjaW4gPj4gTiA+PiBQOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBOOyBpKyspIHsKICAgICAgICBjaW4gPj4gY29sb3JzW2ldOwogICAgfQogICAgY291dCA8PCBiZnMoKTsKfQ==