#include <bits/stdc++.h>
using namespace std;
const int inf = (int)1e9;
const long long linf = (long long)1e18;
const double eps = (double)1e-8;
const int mod = (int)1e9 + 7;
const int maxn = (int)5e5 + 5;
const int MX = (int)5e5;
string st;
int n;
vector<int> a, b, res, res2;
double pi = atan2(0., -1.);
const int LOG = 20;
const int SZ = (1 << LOG);
int rev[SZ];
complex<double> alpha[SZ];
void initFFT() {
  for (int i = 1; i < SZ; i++) {
    int it = 0;
    while (!(i & (1 << it))) it++;
    rev[i] = rev[i ^ (1 << it)] ^ (1 << (LOG - it - 1));
  }
  for (int i = 0; i < SZ; i++) {
    double x = pi * i / (double)SZ;
    alpha[i] = complex<double>(cos(x), sin(x));
  }
}
vector<complex<double> > FFT(vector<complex<double> > &st) {
  int n = (int)st.size();
  int k = 0;
  while ((1 << k) < n) k++;
  if ((1 << k) != n) throw;
  vector<complex<double> > v, oth;
  oth.resize(n);
  v.resize(n);
  for (int i = 0; i < n; i++) v[rev[i] >> (LOG - k)] = st[i];
  for (int it = LOG - k; it < LOG; it++) {
    int half = (n >> (LOG - it));
    for (int pos = 0; pos < n; pos += (half << 1)) {
      for (int i = 0; i < half; i++) {
        complex<double> a = v[pos + i];
        complex<double> b =
            v[pos + half + i] * alpha[i << (LOG - k + LOG - it)];
        oth[pos + i] = a + b;
        oth[pos + half + i] = a - b;
      }
    }
    v.swap(oth);
  }
  return v;
}
vector<complex<double> > FFT(const vector<int> &v, int n) {
  vector<complex<double> > cv(n, 0.);
  for (int i = 0; i < (int)v.size(); i++) cv[i] = complex<double>(v[i]);
  return FFT(cv);
}
vector<int> mulFFT(const vector<int> &a, const vector<int> &b) {
  int n = (int)a.size() + (int)b.size();
  while (n & (n - 1)) n++;
  vector<complex<double> > A = FFT(a, n);
  vector<complex<double> > B = FFT(b, n);
  for (int i = 0; i < n; i++) A[i] *= B[i];
  B = FFT(A);
  reverse(B.begin() + 1, B.end());
  for (auto &it : B) it /= n;
  vector<int> ans;
  ans.resize(n);
  for (int i = 0; i < n; i++) ans[i] = ((long long)(B[i].real() + 0.5));
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  initFFT();
  int T;
  cin >> T;
  for (int(numt) = (1); (numt) <= (int)(T); ++(numt)) {
    cin >> n;
    cin >> st;
    a.clear();
    b.clear();
    for (int i = (0); i < (int)(n); ++i) {
      if (st[i] == 'V')
        a.push_back(1);
      else
        a.push_back(0);
      if (st[n - i - 1] == 'K')
        b.push_back(1);
      else
        b.push_back(0);
    }
    res = mulFFT(a, b);
    res2 = vector<int>(2 * n + 1);
    int cntans = 0;
    vector<int> ans = vector<int>(n + 1);
    for (int i = (0); i <= (int)(2 * n); ++i) {
      if (res[i]) res2[abs(n - 1 - i)] = 1;
    }
    for (int i = (1); i <= (int)(n); ++i) {
      ans[i] = 1;
      for (int j = (1); j <= (int)(n); ++j) {
        if (1ll * i * j <= n && res2[i * j] == 1) {
          ans[i] = 0;
          break;
        }
      }
      cntans += ans[i];
    }
    cout << cntans << "\n";
    for (int i = (1); i <= (int)(n); ++i) {
      if (ans[i]) cout << i << " ";
    }
    cout << "\n";
  }
  return 0;
}
