#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=1111;
char str[maxn];
bool judge(char str[],int i)
{
if(str[i]=='+'||str[i]=='*')
{
if(str[i+1]=='\0'||i==0||str[i+1]=='+'||str[i+1]=='*')
{
return false;
}
else if(str[i+1]=='0')
{
if(str[i+2]>='0'&&str[i+2]<='9')
return false;
}
else
return true;
}
else if(str[i]>='0'&&str[i]<='9')
{
if(str[i]=='0')
{
if(str[i-1]=='+'||str[i-1]=='*'||i==0)
{
if(str[i+1]>='1'&&str[i+1]<=9)
{
return false;
}
if(str[i+1]=='?')
{
if(str[i+2]=='\0'||str[i+2]=='+'||str[i+2]=='*')
return false;
}
}
}
int cont=0;
for(int z=i-1;z>=0;z--)
{
if(str[z]=='+'||str[z]=='*')
{
break;
}
else if(str[z]=='0')
{
cont=1;
}
else if(str[z]>='1'&&str[z]<='9')
{
cont=0;
}
}
if(cont==0)
return true;
else
return false;
}
return true;
}
int main()
{
int n;
cin>>n;
getchar();
while(n--)
{
gets(str);
int cont=0;
for(int i=0;str[i]!='\0';i++)
{
if(str[i]!='?')
{
if(!judge(str,i))
{
cont=1;
break;
}
}
else
{
str[i]='1';
if(!judge(str,i))
{
str[i]='+';
if(!judge(str,i))
{
cont=1;
break;
}
}
}
}
if(cont==1)
printf("IMPOSSIBLE\n");
else
{
puts(str);
}
}
return 0;
}
/*
10000
0?0?0
?0?0?
0?????
?????0
0+0????
00+1
1+00
*/