#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647;
const int maxn = 100010;
int N, mod;
bool f[32][32][50010];
int D[32][32][50010];
int A[maxn], c[maxn], d[120], st[120];
int main() {
  cin >> N >> mod;
  int x, tot = 0;
  for (int i = 1; i <= N; i++) {
    scanf("%d", &x);
    if (x <= 31) A[++tot] = x, c[x] = i;
  }
  d[0] = 1;
  for (int i = 1; i <= 31; i++) d[i] = d[i / 10] * 10;
  if (N > 31) N = 31;
  int status = 1;
  while (status < N) status <<= 1;
  for (int k = 1; k <= N; k++) {
    for (int i = 0; i < status; i++)
      for (int j = 0; j < mod; j++)
        if (f[k - 1][i][j]) {
          f[k][i ^ A[k]][(j * d[A[k]] + A[k]) % mod] = 1;
          D[k][i ^ A[k]][(j * d[A[k]] + A[k]) % mod] = j;
          f[k][i][j] = 1;
          D[k][i][j] = -2;
        }
    f[k][A[k]][A[k] % mod] = 1;
    D[k][A[k]][A[k] % mod] = -1;
  }
  if (f[N][0][0]) {
    puts("Yes");
    N++;
    int ans = 0, a = 0, b = 0;
    while (N--) {
      if (D[N][a][b] == -2) continue;
      if (D[N][a][b] == -1) {
        st[++ans] = A[N];
        break;
      }
      st[++ans] = A[N];
      int tmp = b;
      b = D[N][a][b];
      a ^= A[N];
      if ((b * d[A[N]] + A[N]) % mod != tmp)
        printf("\nERROR! %d %d %d\n", b, A[N], tmp);
    }
    printf("%d\n", ans);
    for (int i = ans; i >= 1; i--) printf("%d ", c[st[i]]);
    int K = 0;
    puts("");
    for (int i = ans; i >= 1; i--) {
      K = (K * d[st[i]] + st[i]) % mod;
    }
    if (K != 0) printf("%d\n", K);
  } else
    puts("No");
  return 0;
}
