#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const long long LINF = INF * (long long)INF;
struct base {
  double a, b;
  base() : a(0), b(0) {}
  base(double a, double b) : a(a), b(b) {}
  double real() const { return a; }
  base operator+(const base& z) const { return base(a + z.a, b + z.b); }
  base operator-(const base& z) const { return base(a - z.a, b - z.b); }
  base operator*(const base& z) const {
    return base(a * z.a - b * z.b, a * z.b + z.a * b);
  }
  base operator*=(const base& z) { return (*this) = (*this) * z; }
  base operator/=(const int& k) {
    a /= k;
    b /= k;
    return *this;
  }
  base operator=(const int& k) {
    a = k;
    b = 0;
    return *this;
  }
  void print() { cout << "(" << a << ", " << b << ") "; }
};
const int LEN = 1 << 20;
base PW[LEN];
void fft(base* a, int n, bool invert) {
  int lg = 0;
  while ((1 << lg) < n) lg++;
  for (int i = (0); i < (n); ++i) {
    int x = 0;
    for (int j = (0); j < (lg); ++j) x |= ((i >> j) & 1) << (lg - 1 - j);
    if (i < x) swap(a[i], a[x]);
  }
  for (int len = 2; len <= n; len <<= 1) {
    int diff = LEN / len;
    if (invert) diff = LEN - diff;
    for (int i = 0; i < n; i += len) {
      int pos = 0;
      for (int j = (0); j < (len >> 1); ++j) {
        base *ptr1 = a + i + j, *ptr2 = a + i + j + (len >> 1);
        base u = *ptr1, v = (*ptr2) * PW[pos];
        *ptr1 = u + v;
        *ptr2 = u - v;
        pos += diff;
        if (pos >= LEN) pos -= LEN;
      }
    }
  }
  if (invert)
    for (int i = (0); i < (n); ++i) a[i] /= n;
}
void initFFT() {
  double angle = 2 * PI / LEN;
  for (int i = (0); i < (LEN); ++i) {
    double ca = i * angle;
    PW[i] = base(cos(ca), sin(ca));
  }
}
void mult(const int* a, const int* b, int n, int m, int* res) {
  int lg = 0;
  while ((1 << lg) < n + m) lg++;
  base *A = new base[1 << lg], *B = new base[1 << lg];
  for (int i = (0); i < (1 << lg); ++i) {
    if (i < n) A[i] = a[i];
    if (i < m) B[i] = b[i];
  }
  fft(A, 1 << lg, 0);
  fft(B, 1 << lg, 0);
  for (int i = (0); i < (1 << lg); ++i) A[i] *= B[i];
  fft(A, 1 << lg, 1);
  for (int i = (0); i < (1 << lg); ++i) res[i] = (int)(A[i].real() + 0.5);
  delete A;
  delete B;
}
char S[LEN];
bool blocked[LEN];
int a[LEN], b[LEN], c[LEN];
int main() {
  int t;
  scanf("%d", &t);
  initFFT();
  while (t--) {
    int n;
    scanf("%d%s", &n, S);
    for (int i = (0); i < (n); ++i) {
      a[i] = S[i] == 'V';
      b[i] = S[n - 1 - i] == 'K';
    }
    mult(a, b, n, n, c);
    for (int i = (1); i < (n); ++i) blocked[i] = c[n - 1 - i] || c[n - 1 + i];
    int cnt = 0;
    for (int i = (1); i < (n + 1); ++i) {
      for (int j = i << 1; j < n; j += i) blocked[i] |= blocked[j];
      cnt += !blocked[i];
    }
    printf("%d\n", cnt);
    for (int i = (1); i < (n + 1); ++i)
      if (!blocked[i]) printf("%d ", i);
    printf("\n");
    for (int i = (0); i < (n << 1); ++i) c[i] = 0;
    for (int i = (1); i < (n); ++i) blocked[i] = 0;
  }
  return 0;
}
