#include <bits/stdc++.h>
using namespace std;
int v, n;
long long k, rt;
long long b[100000], a[2000];
int br[50000][60];
int per[1002][7000];
int dr[8000][20], rz[8000][20];
long long prim[2000];
pair<int, long long> f[1001][7000];
int pr[1001][7000], cnt;
int fn[200000];
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  long long x = k;
  for (int i = 2; 1ll * i * i <= k; i++) {
    if (x % i == 0) {
      cnt++;
      prim[cnt] = i;
    }
    while (x % i == 0) x = x / i;
  }
  if (x != 1) {
    cnt++;
    prim[cnt] = x;
  }
  for (int i = 1; 1ll * i * i <= k; i++) {
    if (k % i == 0) {
      v++;
      b[v] = i;
      if (k / i != i) {
        v++;
        b[v] = k / i;
      }
    }
    rt = i;
  }
  sort(b + 1, b + v + 1);
  for (int i = 1; i <= n; i++) cin >> a[i];
  if (k == 1) {
    cout << "1\n";
    long long mn = 1e18;
    int nm = 0;
    for (int i = 1; i <= n; i++)
      if (a[i] < mn) {
        mn = a[i];
        nm = i;
      }
    cout << nm << "\n";
    return 0;
  }
  for (int i = 1; i <= n; i++) {
    long long x = a[i];
    for (int j = 1; j <= cnt; j++) {
      while (x % prim[j] == 0) {
        x = x / prim[j];
        rz[i][j]++;
      }
    }
  }
  int kl = 1;
  for (int i = 1; i <= v; i++) {
    long long x = b[i];
    int rt = 1;
    for (int j = 1; j <= cnt; j++) {
      while (x % prim[j] == 0) {
        x = x / prim[j];
        dr[i][j]++;
      }
      if (br[rt][dr[i][j]] == 0) {
        kl++;
        br[rt][dr[i][j]] = kl;
      }
      rt = br[rt][dr[i][j]];
    }
    fn[rt] = i;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= v; j++) {
      int rt = 1;
      for (int k = 1; k <= cnt; k++) {
        int x = rz[i][k];
        int y = dr[j][k];
        int to = min(x + y, dr[v][k]);
        rt = br[rt][to];
      }
      per[i][j] = fn[rt];
    }
  for (int i = 0; i <= n; i++)
    for (int j = 1; j <= v; j++) f[i][j] = make_pair(n + 1, 0ll);
  f[0][1] = make_pair(0, 0);
  for (int i = 0; i < n; i++) {
    for (int j = 1; j <= v; j++) {
      int to = per[i + 1][j];
      f[i + 1][to] = min(f[i + 1][to], make_pair(f[i][j].first + 1,
                                                 f[i][j].second + a[i + 1]));
      if (f[i + 1][to] ==
          make_pair(f[i][j].first + 1, f[i][j].second + a[i + 1]))
        pr[i + 1][to] = j;
      f[i + 1][j] = min(f[i + 1][j], f[i][j]);
      if (f[i + 1][j] == f[i][j]) pr[i + 1][j] = j;
    }
  }
  if (f[n][v].first >= n + 1) {
    cout << "-1\n";
    return 0;
  } else {
    cout << f[n][v].first << "\n";
    int x = v;
    for (int i = n; i >= 1; i--) {
      if (pr[i][x] != x) cout << i << " ";
      x = pr[i][x];
    }
    cout << "\n";
  }
}
