#include <bits/stdc++.h>
using namespace std;
const int N = (int)5e5 + 5;
const double PI = 3.14159265358979323;
struct Complex {
  double a, b;
  Complex(const double& _a = 0, const double& _b = 0) : a(_a), b(_b) {}
  Complex operator+(const Complex& other) const {
    Complex ret;
    ret.a = a + other.a;
    ret.b = b + other.b;
    return ret;
  }
  Complex operator-(const Complex& other) const {
    Complex ret;
    ret.a = a - other.a;
    ret.b = b - other.b;
    return ret;
  }
  Complex operator*(const Complex& other) const {
    Complex ret;
    ret.a = a * other.a - b * other.b;
    ret.b = a * other.b + b * other.a;
    return ret;
  }
  Complex operator/(const int& x) const {
    Complex ret;
    ret.a = a / x;
    ret.b = b / x;
    return ret;
  }
};
vector<int> rev;
void getRev(const int& n) {
  rev.resize(n);
  for (int i = 0; i < n; ++i) {
    rev[i] = 0;
    for (int k = 1; k < n; k <<= 1) rev[i] += ((i & k) > 0) * (n / k >> 1);
  }
}
void fft(vector<Complex>& x, const int& tp) {
  int n = (int)x.size();
  for (int i = 0; i < n; ++i)
    if (i < rev[i]) swap(x[i], x[rev[i]]);
  int id = 0;
  for (int m = 2; m <= n; m <<= 1) {
    ++id;
    Complex wm(cos(tp * 2 * PI / m), sin(tp * 2 * PI / m));
    for (int k = 0; k < n; k += m) {
      Complex w(1, 0);
      for (int j = 0; j < m / 2; ++j) {
        Complex u = x[k + j];
        Complex t = x[k + j + m / 2] * w;
        x[k + j] = u + t;
        x[k + j + m / 2] = u - t;
        w = w * wm;
      }
    }
  }
}
vector<int> multiply(const vector<int>& a, const vector<int>& b) {
  int len = max((int)a.size(), (int)b.size());
  int n = 1;
  while (n < 2 * len) n <<= 1;
  getRev(n);
  vector<Complex> aa(n), bb(n);
  for (int i = 0; i < len; ++i)
    aa[i] = Complex(a[i], 0), bb[i] = Complex(b[i], 0);
  fft(aa, 1);
  fft(bb, 1);
  vector<Complex> temp(n);
  for (int i = 0; i < n; ++i) temp[i] = aa[i] * bb[i];
  fft(temp, -1);
  for (int i = 0; i < n; ++i) temp[i] = temp[i] / n;
  vector<int> ret(len + len - 1);
  for (int i = 0; i < len + len - 1; ++i) ret[i] = (int)(temp[i].a + 0.5);
  return ret;
}
char inp[N];
bool isAns[N];
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    int n;
    scanf("%d %s", &n, inp);
    vector<int> v(n), k(n);
    for (int i = 0; i < n; ++i) {
      if (inp[i] == 'V') v[i] = 1;
      if (inp[i] == 'K') k[n - i - 1] = 1;
    }
    vector<int> prod = multiply(v, k);
    for (int i = 1; i <= n; ++i) isAns[i] = true;
    for (int i = 0; i < (int)prod.size(); ++i)
      if (prod[i]) isAns[abs(i - n + 1)] = false;
    vector<int> ans;
    for (int i = 1; i <= n; ++i) {
      bool ins = true;
      for (int j = i; ins && j <= n; j += i) ins &= isAns[j];
      if (ins) ans.push_back(i);
    }
    printf("%d\n", (int)ans.size());
    for (int i = 0; i < (int)ans.size(); ++i)
      printf("%d%c", ans[i], i == (int)ans.size() - 1 ? '\n' : ' ');
  }
  return 0;
}
