#include <bits/stdc++.h>
using namespace std;
const int N = 50005, M = 32;
bool flag;
int n, P, tot;
int pos[M], ans[M], value[M];
bool f[M][M][N], p[M][M][N];
int Add(int x, int y) {
  if (y >= 10)
    x *= 100;
  else
    x *= 10;
  return (x + y) % P;
}
void Init() {
  scanf("%d%d", &n, &P);
  int x;
  f[0][0][0] = 1;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &x);
    if (x < 32) {
      pos[++tot] = i;
      value[tot] = x;
      for (int j = 0; j <= M - 1; j++)
        for (int k = 0; k <= P - 1; k++)
          if (f[tot - 1][j][k]) {
            f[tot][j][k] = 1;
            int y = Add(k, x);
            f[tot][j ^ x][y] = p[tot][j ^ x][y] = 1;
            if (!y && j == x) {
              flag = 1;
              break;
            }
          }
    }
  }
}
void Work() {
  if (flag) {
    puts("Yes");
    int j = 0, k = 0, num = 0;
    for (int i = tot; i >= 1; i--)
      if (p[i][j][k]) {
        ans[++num] = pos[i];
        j ^= value[i];
        for (int l = 0; l <= P - 1; l++)
          if (Add(l, value[i]) == k && f[i - 1][j][l]) {
            k = l;
            break;
          }
      }
    printf("%d\n", num);
    for (int i = num; i >= 1; i--) {
      if (i != num) putchar(' ');
      printf("%d", ans[i]);
    }
    puts("");
  } else
    puts("No");
}
int main() {
  Init();
  Work();
  return 0;
}
