#include <stdio.h>
#include <stdlib.h>
int main()
{
int t,k,i;
long long n;
char s[100],f[100];
scanf("%d",&t);
while(t--){
scanf("%d%s%lld",&k,s,&n);
for(i=k-1;i>=0;i--){
if(!(n&1)){
f[i]='0';
//printf("1111\n");
n=n>>1;
}else
{
if(s[i]=='n'){
n=n+1;
}
f[i]='1';
n=n>>1;
}
}
f[k]='\0';
if(n!=0)printf("Impossible\n");
else puts(f);
}
return 0;
}
如果n是偶数,则二进制最后一位一定是0,如果是奇数,则需要判断这一位是'p'还是'n',如果是'n'则需要特殊处理,因为如果是'n'那么这里的意思就是负数,但是你把这一位标成了1,就相当于把它当成正数来看,为了不影响下一次的处理,就要给n+1。