#include <bits/stdc++.h>
using namespace std;
const int maxn = 50005;
int n, v, p, prv, nxt, i, j, k, b[32], sop[32], pos[32], sb[32], nn, nnn, tmp,
    sm, xm;
bitset<maxn> f[32][32], e[32][32];
int Sum(int x, int y) {
  if (y >= 10) return (100 * x + y) % p;
  return (10 * x + y) % p;
}
int main() {
  scanf("%d%d", &n, &p);
  prv = 0;
  nxt = 1;
  f[0][0][0] = 1;
  for (i = 1; i <= n; i++) {
    scanf("%d", &v);
    if (v < 32) {
      b[++nn] = v;
      pos[nn] = i;
      for (j = 0; j < 32; j++)
        for (k = 0; k < p; k++)
          if (f[nn - 1][j][k]) {
            f[nn][j][k] = 1;
            e[nn][j][k] = 0;
            tmp = Sum(k, v);
            f[nn][j ^ v][tmp] = e[nn][j ^ v][tmp] = 1;
            if (tmp + (j ^ v) == 0) goto Res;
          }
    }
  }
  puts("No");
  return 0;
Res:;
  puts("Yes");
  sm = xm = 0;
  sb[++nnn] = b[nn];
  sop[nnn] = pos[nn];
  for (i = nn - 1; i; i--) {
    for (j = 0; j < 32; j++)
      for (k = 0; k < p; k++)
        if (e[i][j][k]) {
          if ((j ^ sb[nnn]) == xm && Sum(k, sb[nnn]) == sm) {
            xm = j;
            sm = k;
            sb[++nnn] = b[i];
            sop[nnn] = pos[i];
            goto Nxt;
          }
        }
  Nxt:;
  }
  printf("%d\n", nnn);
  for (i = nnn; i; i--) printf("%d ", sop[i]);
  return 0;
}
