#include <bits/stdc++.h>
using namespace std;
const int inf = 9999 + 208;
int n, p;
unsigned short f[33][33][50005], g[33][33][50005];
int num[33], pos[33];
inline int get() {
  char ch;
  while (!isdigit(ch = getchar()))
    ;
  int v = ch - 48;
  while (isdigit(ch = getchar())) v = v * 10 + ch - 48;
  return v;
}
void print(int i, int j, int k, int cnt) {
  if (i == 0)
    printf("%d\n", cnt);
  else {
    if (i != f[i][j][k])
      print(i - 1, j, k, cnt);
    else {
      print(i - 1, j ^ num[i], g[i][j][k], cnt + 1);
      printf("%d ", pos[i]);
    }
  }
}
int main() {
  n = get();
  p = get();
  int tot = 0;
  f[0][0][0] = inf;
  for (int i = 1, a, w; i <= n; i++) {
    a = get();
    if (a > 31) continue;
    num[++tot] = a;
    pos[tot] = i;
    w = a < 10 ? 10 : 100;
    memcpy(f[tot], f[tot - 1], 6600660);
    for (int j = 0; j < 32; j++)
      for (int k = 0; k < p; k++)
        if (f[tot - 1][j][k])
          f[tot][j ^ a][(k * w + a) % p] = tot,
                                      g[tot][j ^ a][(k * w + a) % p] = k;
  }
  if (f[tot][0][0] != inf)
    puts("Yes"), print(tot, 0, 0, 0);
  else
    puts("No");
  return 0;
}
