#include <bits/stdc++.h>
using namespace std;
#define int long long
bool deep(int sum, vector<int>&v, int l, int r){
if(sum%2==1)return 0;
vector<int>a;
for(int i=l; i<=r; i++)a.push_back(v[i]);
int n=a.size();
vector<vector<bool>>dp(n+2, vector<bool>(sum+3));
dp[0][0]=true;
for(int i=1; i<=n; i++){
dp[i][0]=true;
for(int j=1; j<=sum; j++){
if(j-a[i-1]>=0)dp[i][j]=(dp[i-1][j-a[i-1]]|dp[i-1][j]);
}
}return dp[n][sum/2];
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
cin>>t;
for(int _=0; _<t; _++){
int n;
cin>>n;
vector<int>a(n+2), sum(n+2);
for(int j=1; j<=n; j++){
cin>>a[j];
sum[j]=sum[j-1]+a[j];
}vector<bool>check(n+1);
for(int i=2; i<=n; i++){
if(!check[i]){
bool c=true;
//cout<<i<<endl;
for(int j=i; j<=n; j++){
//cout<<j-i+1<<" "<<j<<endl;
if( !deep(sum[j]-sum[j-i], a, j-i+1, j)){
c=false;
break;
}
}if(c){
//cout<<i<<endl;
for(int j=i; j<=n; j+=i){
check[j]=true;
}
}
}
}vector<int>q;
for(int i=2; i<=n; i++){
if(check[i])q.push_back(i);
}cout<<q.size()<<" ";
for(auto e: q)cout<<e<<" ";
cout<<endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |