#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &x) {
  int f = 0, c = getchar();
  x = 0;
  while (!isdigit(c)) f |= c == 45, c = getchar();
  while (isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
  if (f) x = -x;
}
template <typename T, typename... Args>
inline void read(T &x, Args &...args) {
  read(x);
  read(args...);
}
namespace run {
const int maxn = 5e4 + 10;
int ans[maxn], a[maxn], b[maxn], pos[maxn];
int m, n, num;
bool flg;
inline void dfs(int now, int len, int xo, int sum) {
  if (flg) return;
  if (!xo && !sum && len) {
    printf("Yes\n%d\n", len);
    for (register int i = 1; i <= len; ++i) printf("%d ", ans[i]);
    flg = true;
    return;
  }
  if (now > num) return;
  ans[len + 1] = pos[now];
  dfs(now + 1, len + 1, xo ^ b[now],
      b[now] < 10 ? (sum * 10 + b[now]) % m : (sum * 100 + b[now]) % m);
  dfs(now + 1, len, xo, sum);
  return;
}
inline int main() {
  read(n, m);
  for (register int i = 1; i <= n; ++i) {
    read(a[i]);
    if (a[i] < 25) b[++num] = a[i], pos[num] = i;
  }
  dfs(1, 0, 0, 0);
  if (!flg) puts("No");
  return 0;
}
}  // namespace run
int main() { return run ::main(); }
