#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long res = 0;
  int f(1);
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) res = (res << 1) + (res << 3) + (ch ^ 48), ch = getchar();
  return res * f;
}
template <class T>
void write(T x) {
  if (x > 9) write(x / 10);
  putchar(48 + x % 10);
}
int const maxn = 26;
int n, p, a[maxn], b[maxn], m, check, pos[maxn];
int inline pw(int x) { return x < 10 ? 10 : 100; }
inline void dfs(int k, int x, int y, int num) {
  if (x == 0 and y == 0 and num) {
    puts("Yes");
    write(num);
    putchar('\n');
    for (register int i = 1; i <= num; i++) write(b[i]), putchar(' ');
    exit(0);
  }
  if (k > m) return;
  dfs(k + 1, x, y, num);
  b[num + 1] = pos[a[k]];
  dfs(k + 1, x ^ a[k], (y * pw(a[k]) + a[k]) % p, num + 1);
}
signed main() {
  n = read(), p = read();
  for (register int i = 1; i <= n; i++) {
    int x = read();
    if (x < maxn) a[++m] = x, pos[x] = i;
  }
  dfs(1, 0, 0, 0);
  puts("No");
  return 0;
}
