#include <bits/stdc++.h>
using namespace std;
int e[32], p[32], ans[32], n, mo;
bool f[32][32][50005];
pair<bool, unsigned short> fr[32][32][50005];
int main() {
  scanf("%d%d", &n, &mo);
  for (int i = (1); i <= (int)n; i++) {
    int x;
    scanf("%d", &x);
    if (x <= 31) e[++*e] = x, p[*e] = i;
  }
  for (int i = (1); i <= (int)*e; i++) {
    f[i][e[i]][e[i] % mo] = 1;
    fr[i][e[i]][e[i] % mo] = pair<bool, unsigned short>(1, -1);
    for (int x = (0); x <= (int)31; x++)
      for (int j = (0); j <= (int)mo - 1; j++)
        if (f[i - 1][x][j]) {
          f[i][x][j] = 1;
          fr[i][x][j] = pair<bool, unsigned short>(0, j);
          int nxt = (j * (e[i] >= 10 ? 100 : 10) + e[i]) % mo;
          f[i][x ^ e[i]][nxt] = 1;
          fr[i][x ^ e[i]][nxt] = pair<bool, unsigned short>(1, j);
        }
  }
  if (!f[*e][0][0]) {
    puts("No");
    return 0;
  }
  puts("Yes");
  int id1 = 0, id2 = 0;
  ;
  for (int i = (*e); i >= (int)1; i--) {
    int to = fr[i][id1][id2].second;
    if (fr[i][id1][id2].first == 1) {
      ans[++*ans] = p[i];
      id1 ^= e[i];
    }
    id2 = to;
    if (id2 == -1) break;
  }
  printf("%d\n", *ans);
  for (int i = (*ans); i >= (int)1; i--) printf("%d ", ans[i]);
}
