#include <bits/stdc++.h>
using namespace std;
const int N = 2e6 + 5;
const double PI = acos(-1), eps = 1;
struct Comp {
  double x, y;
  Comp() {}
  Comp(double X, double Y) { x = X, y = Y; }
} f[N], g[N], z[N];
int rev[N];
bool vis[N];
char a[N], b[N];
double qcos[N], qsin[N];
Comp operator+(Comp x, Comp y) { return Comp(x.x + y.x, x.y + y.y); }
Comp operator-(Comp x, Comp y) { return Comp(x.x - y.x, x.y - y.y); }
Comp operator*(Comp x, Comp y) {
  return Comp(x.x * y.x - x.y * y.y, x.x * y.y + x.y * y.x);
}
void fft(int n, Comp *p, int opt) {
  for (int i = 0; i < n; ++i)
    if (i < rev[i]) swap(p[i], p[rev[i]]);
  for (int i = 1; i < n; i <<= 1) {
    Comp w = Comp(qcos[i], opt * qsin[i]);
    for (int j = 0; j < n; j += (i << 1)) {
      Comp w0 = Comp(1, 0);
      for (int k = 0; k < i; ++k, w0 = w0 * w) {
        Comp x = p[j + k], y = w0 * p[i + j + k];
        p[j + k] = x + y, p[i + j + k] = x - y;
      }
    }
  }
}
int main() {
  for (int i = 1; i <= (1 << 20); ++i)
    qcos[i] = cos(PI / i), qsin[i] = sin(PI / i);
  int T;
  scanf("%d", &T);
  while (T--) {
    int n;
    scanf("%d %s", &n, a), --n;
    for (int i = 0; i <= n; ++i)
      if (a[i] == '?') a[i] = 0;
    for (int i = 0; i <= n; ++i) b[i] = a[n - i];
    int len = 1 << (int)ceil(log2(2 * n + 1));
    for (int i = 0; i <= len; ++i)
      rev[i] = (rev[i >> 1] >> 1) + (i & 1) * (len >> 1);
    for (int i = 0; i <= len; ++i)
      f[i] = Comp(a[i] * a[i] * a[i], 0), g[i] = Comp(b[i], 0);
    fft(len, f, 1), fft(len, g, 1);
    for (int i = 0; i <= len; ++i) z[i] = f[i] * g[i];
    for (int i = 0; i <= len; ++i)
      f[i] = Comp(a[i], 0), g[i] = Comp(b[i] * b[i] * b[i], 0);
    fft(len, f, 1), fft(len, g, 1);
    for (int i = 0; i <= len; ++i) z[i] = z[i] + f[i] * g[i];
    for (int i = 0; i <= len; ++i)
      f[i] = Comp(a[i] * a[i], 0), g[i] = Comp(b[i] * b[i], 0);
    fft(len, f, 1), fft(len, g, 1);
    for (int i = 0; i <= len; ++i) z[i] = z[i] - Comp(2, 0) * f[i] * g[i];
    fft(len, z, -1);
    for (int i = 0; i <= len; ++i) z[i].x /= len;
    for (int i = 0; i < n; ++i)
      if (abs(z[i].x) > eps) vis[n - i] = 1;
    for (int i = 1; i <= n; ++i)
      if (!vis[i])
        for (int j = 2; i * j <= n; ++j)
          if (vis[i * j]) vis[i] = 1;
    int ans = 0;
    for (int i = 1; i <= n + 1; ++i)
      if (!vis[i]) ++ans;
    printf("%d\n", ans);
    for (int i = 1; i <= n + 1; ++i) {
      if (!vis[i]) printf("%d ", i);
      vis[i] = 0;
    }
    printf("\n");
    for (int i = 0; i <= n; ++i) a[i] = b[i] = 0;
  }
  return 0;
}
