#include <bits/stdc++.h>
using namespace std;
static char buf[1000000], *p1 = buf, *p2 = buf;
inline void read(int &x) {
  int f = 1;
  x = 0;
  char c =
      p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2)
          ? EOF
          : *p1++;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2)
            ? EOF
            : *p1++;
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    c = p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1000000, stdin), p1 == p2)
            ? EOF
            : *p1++;
  }
  x *= f;
}
int a[50005], p, n, ans[50005], tot, aa[50005];
inline void dfs(int now, int num, int x, int y) {
  if (!x && !y && num) {
    printf("Yes\n%d\n", num);
    register int i;
    for (i = 1; i <= num; i++) printf("%d ", ans[i]);
    exit(0);
  }
  if (now > n) return;
  ans[num + 1] = aa[now];
  dfs(now + 1, num + 1, x ^ a[now],
      (y * (a[now] >= 10 ? 100 : 10) + a[now]) % p);
  dfs(now + 1, num, x, y);
}
int main() {
  register int m, i, x;
  read(m);
  read(p);
  for (i = 1; i <= m; i++) {
    read(x);
    if (x <= 24) a[++n] = x, aa[n] = i;
  }
  dfs(1, 0, 0, 0);
  puts("No");
  return 0;
}
