#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <stdbool.h>

#define ln "\n"
#define reps(i,a,b) for(int (i)=(a); (i)<(b); ++(i))
#define rep(i,n) for(int (i)=0; (i)<(n); ++(i))
#define repst(i,a,b) for(int (i)=(a); (i)<=(b); ++(i))
#define rept(i,n) for(int (i)=0; (i)<=(n); ++(i))
#define reprt(i,a,b) for(int (i)=(a); (i)>=(b); --(i))
#define repr(i,n) for(int (i)=(n); (i)>=0; --(i))
#define repn(i,a,b,n) for(int (i)=(a); (i)<(b); (i)+=(n))
#define repnt(i,a,b,n) for(int (i)=(a); (i)<=(b); (i)+=(n))
#define PI M_PI

typedef long double ld;
typedef long long ll;

const int MOD = 1e9 + 7;
const int INF = 1e9;
const ll INFF = 1e18;
const double EPS = 1e-9;

/*********TEMPLATE**********/

int main() {

  int i,j,N,A,B,C,X,Y[110];
  while(1) {
    scanf("%d %d %d %d %d",&N, &A, &B, &C, &X);
    //printf("%d %d %d %d %d\n",N,A,B,C,X);
    if (N==0 && A==0 && B==0 && C==0 && X==0) break;
    rep(i,N) scanf("%d", &Y[i]);
    //rep(i,N) printf("%d ", Y[i]);
    //printf(ln);

    // jは現在のリールの位置
    j=0;

    for (i=0; i<10001; i++) {
      // 合致したら、リールを右に
      if (X==Y[j]) {
        j++;
      }

      // 次のXを求める
      X = (A * X + B) % C;

      // すべてのりーるがおわったら
      if (j>=N) break;
    }
    if (i<=10000) printf("%d\n",i);
    else printf("-1\n");
  }

  /*
  0
  3
  255
  -1
  198
  199
  10000
  -1
  */

  return 0;

}

