#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const double PI = acos(-1);
namespace fft {
void fft(vector<complex<double> > &v, bool inv) {
  int n = v.size();
  vector<complex<double> > w(n / 2), aux(n);
  for (int i = 0; i < n / 2; i++) {
    int k = i & -i;
    if (i == k) {
      double ang = 2 * PI * i / n;
      if (inv) ang *= -1;
      w[i] = complex<double>(cos(ang), sin(ang));
    } else
      w[i] = w[i - k] * w[k];
  }
  for (int i = n / 2; i; i >>= 1) {
    aux = v;
    for (int k = 0; 2 * k < n; k += i) {
      for (int j = 0; j < i; j++) {
        complex<double> a = aux[2 * k + j], b = aux[2 * k + j + i] * w[k];
        v[k + j] = a + b;
        v[k + j + n / 2] = a - b;
      }
    }
  }
  if (inv) {
    for (int i = 0; i < n; i++) {
      v[i] /= n;
    }
  }
}
vector<ll> multiply(vector<ll> &v, vector<ll> &w) {
  vector<complex<double> > fv(v.begin(), v.end()), fw(w.begin(), w.end());
  int n = 1;
  while (n < max(v.size(), w.size())) n <<= 1;
  n <<= 1;
  fv.resize(n);
  fw.resize(n);
  fft(fv, 0);
  fft(fw, 0);
  for (int i = 0; i < n; i++) fv[i] *= fw[i];
  fft(fv, 1);
  vector<ll> ret(n);
  for (int i = 0; i < n; i++) ret[i] = round(fv[i].real());
  return ret;
}
vector<ll> multiply(vector<ll> &v, vector<ll> &w, int b) {
  int n = 1;
  while (n < max(v.size(), w.size())) n <<= 1;
  n <<= 1;
  vector<complex<double> > v1(n), v2(n), v3(n), v4(n), r1(n), r2(n), r3(n);
  for (int i = 0; i < v.size(); i++) {
    v1[i] = complex<double>(v[i] / b, 0);
    v2[i] = complex<double>(v[i] % b, 0);
  }
  for (int i = 0; i < w.size(); i++) {
    v3[i] = complex<double>(w[i] / b, 0);
    v4[i] = complex<double>(w[i] % b, 0);
  }
  fft(v1, 0);
  fft(v2, 0);
  fft(v3, 0);
  fft(v4, 0);
  for (int i = 0; i < n; i++) {
    r1[i] = v1[i] * v3[i];
    r2[i] = v1[i] * v4[i] + v2[i] * v3[i];
    r3[i] = v2[i] * v4[i];
  }
  fft(r1, 1);
  fft(r2, 1);
  fft(r3, 1);
  vector<ll> ret(n);
  for (int i = 0; i < n; i++) {
    ret[i] = (ll)round(r1[i].real()) * b * b + (ll)round(r2[i].real()) * b +
             (ll)round(r3[i].real());
  }
  return ret;
}
}  // namespace fft
const int maxn = 1e6 + 5;
int n, ans[maxn];
char s[maxn];
void solve() {
  scanf("%d%s", &n, s);
  vector<ll> v(n), k(n);
  for (int i = 1; i <= n; i++) ans[i] = 0;
  for (int i = 0; i < n; i++) {
    v[i] = (s[i] == 'V');
    k[i] = (s[n - i - 1] == 'K');
  }
  auto ret = fft::multiply(v, k);
  for (int i = 0; i <= 2 * n - 2; i++) ans[abs(i - n + 1)] += ret[i];
  vector<int> res;
  for (int i = 1; i <= n; i++) {
    int flag = 1;
    for (int j = i; j < n; j += i)
      if (ans[j]) {
        flag = 0;
        break;
      }
    if (flag) res.push_back(i);
  }
  printf("%d\n", (int)res.size());
  for (auto u : res) printf("%d ", u);
  puts("");
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    solve();
  }
  return 0;
}
