#include <bits/stdc++.h>
using namespace std;
namespace fft {
struct ComplexNumber {
  double x, y;
  ComplexNumber(double x = 0, double y = 0) : x(x), y(y) {}
};
inline ComplexNumber operator+(ComplexNumber a, ComplexNumber b) {
  return ComplexNumber(a.x + b.x, a.y + b.y);
}
inline ComplexNumber operator-(ComplexNumber a, ComplexNumber b) {
  return ComplexNumber(a.x - b.x, a.y - b.y);
}
inline ComplexNumber operator*(ComplexNumber a, ComplexNumber b) {
  return ComplexNumber(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x);
}
inline ComplexNumber conj(ComplexNumber a) { return ComplexNumber(a.x, -a.y); }
int base = 1;
vector<ComplexNumber> roots = {{0, 0}, {1, 0}};
vector<int> rev = {0, 1};
const double PI = atan2(0, -1);
void ensureBase(int b) {
  if (b <= base) return;
  rev.resize(1 << b);
  for (int i = 0; i < (1 << b); i++)
    rev[i] = (rev[i >> 1] >> 1) + ((i & 1) << (b - 1));
  roots.resize(1 << b);
  while (base < b) {
    double angle = 2 * PI / (1 << (base + 1));
    for (int i = (1 << (base - 1)); i < (1 << base); i++) {
      roots[i << 1] = roots[i];
      double angle_i = angle * (2 * i + 1 - (1 << base));
      roots[(i << 1) + 1] = ComplexNumber(cos(angle_i), sin(angle_i));
    }
    base++;
  }
}
void fft(vector<ComplexNumber> &a, int n) {
  int shift = 0;
  while ((1 << shift) < n) {
    shift++;
  }
  ensureBase(shift);
  shift = base - shift;
  for (int i = 0; i < n; i++) {
    if (i < (rev[i] >> shift)) swap(a[i], a[rev[i] >> shift]);
  }
  for (int len = 1; len < n; len <<= 1) {
    for (int i = 0; i < n; i += 2 * len) {
      for (int j = i, k = i + len; j < i + len; j++, k++) {
        ComplexNumber z = a[k] * roots[k - i];
        a[k] = a[j] - z;
        a[j] = a[j] + z;
      }
    }
  }
}
vector<ComplexNumber> f;
vector<int> multiply(vector<int> &a, vector<int> &b) {
  int need = a.size() + b.size() - 1;
  int nbase = 0;
  while ((1 << nbase) < need) nbase++;
  ensureBase(nbase);
  int sz = (1 << nbase);
  f.resize(sz);
  for (int i = 0; i < sz; i++) {
    if (i < (int)a.size())
      f[i].x = a[i];
    else
      f[i].x = 0;
    if (i < (int)b.size())
      f[i].y = b[i];
    else
      f[i].y = 0;
  }
  fft(f, sz);
  ComplexNumber r = ComplexNumber(0, -0.25 / sz);
  for (int i = 0; i <= (sz >> 1); i++) {
    int j = (sz - i) & (sz - 1);
    ComplexNumber z = (f[j] * f[j] - conj(f[i] * f[i])) * r;
    if (i != j) f[j] = (f[i] * f[i] - conj(f[j] * f[j])) * r;
    f[i] = z;
  }
  fft(f, sz);
  vector<int> res(need);
  for (int i = 0; i < need; i++) res[i] = f[i].x + 0.5;
  return res;
}
};  // namespace fft
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int t;
  cin >> t;
  vector<int> a, b;
  vector<int> c, res;
  while (t-- > 0) {
    int n;
    string s;
    cin >> n >> s;
    a.resize(n);
    b.resize(n);
    for (int i = 0; i < n; i++) {
      a[i] = (s[i] == 'V');
      b[i] = (s[n - 1 - i] == 'K');
    }
    c = fft::multiply(a, b);
    res.clear();
    for (int k = 1; k <= n; k++) {
      bool flag = true;
      for (int i = k; i < n; i += k) {
        if (c[n - 1 - i] != 0 || c[n - 1 + i] != 0) flag = false;
      }
      if (flag) res.push_back(k);
    }
    cout << res.size() << "\n";
    for (int i : res) cout << i << " ";
    cout << "\n";
  }
  return 0;
}
