#include<iostream>
#include<algorithm>
#include<set>
#include<cmath>
#include<string.h>
//933D
using namespace std;
using ll=long long;
int a[1010],p[1010];
char c[1010];
bool st[1010];
int t,n,m,z;
set<int>s;
void dfs(int k)
{
if(k>t)
{
s.insert(z);
return;
}
for(int i=1;i<=m;i++)
{
if(c[i]=='?'&&!st[i])
{
z=(z+a[i]-1)%n+1;
st[i]=true;
dfs(k+1);
z=(z-a[i]+n-1)%n+1;
st[i]=false;
z=(z-a[i]+n-1)%n+1;
st[i]=true;
dfs(k+1);
z=(z+a[i]-1)%n+1;
st[i]=false;
}
}
return;
}
void solve()
{
t=0;
memset(p,0,sizeof p);
memset(st,0,sizeof st);
cin>>n>>m>>z;
bool flag=false;
for(int i=1;i<=m;i++)
{
cin>>a[i];
cin>>c[i];
}
for(int i=1;i<=m;i++)
{
if(c[i]=='0')
{
z+=a[i]%n;
z%=n;
}
if(c[i]=='1')
{
z=(z+n)-a[i]%n;
}
if(c[i]=='?')
{
flag=true;
t++;
}
}
if(!flag)
{
cout<<"1"<<"\n";
cout<<z<<"\n";
return;
}
else
dfs(1);
cout<<s.size()<<"\n";
for(auto i:s)
{
cout<<i<<" ";
}
cout<<"\n";
s.clear();
return;
}
int main()
{
int t=1;
cin>>t;
while(t--)
solve();
return 0;
}
这个代码wa2,佬们看看哪错了