#include <bits/stdc++.h>
using namespace std;
#define maxn 100000+10
int n,T,a[maxn],b[maxn],mark[maxn];
bool solve(int value)
{
b[0] = value;
b[1] = a[0]-b[0];
if(b[1]<0||b[1]>1) return false;
for(int i=1; i<n; i++)
{
b[i+1] = a[i]-b[i]-b[i-1];
if(b[i+1]<0||b[i+1]>1) return false;
}
if(b[n] != 0) return false;
return true;
}
int main()
{
cin>>T;
while(T--)
{
cin>>n;
memset(mark, 0, sizeof(b));
//memset()
for(int i=0; i<n; i++)
cin>>a[i];
int cnt = 0,num = 0;
if(solve(0))
{
cnt++;
for(int i=0; i<n; i++)
mark[i] +=b[i];
}
if(solve(1))
{
cnt++;
for(int i=0; i<n; i++)
mark[i] +=b[i];
}
for(int i=0; i<n; i++)
if(mark[i] == cnt) num++;
cout<<num;
for(int i=0; i<n; i++)
if(mark[i] == cnt) cout<<" "<<i+1;
cout<<endl;
num = 0;
for(int i=0; i<n; i++)
if(mark[i] == 0) num++;
cout<<num;
for(int i=0; i<n; i++)
if(mark[i] == 0) cout<<" "<<i+1;
cout<<endl;
}
return 0;
}
扫雷
最新推荐文章于 2019-09-02 18:41:05 发布