//开始时用3*3*3*3种运算符组合和next_permutation();生成的排列组合运算,得到了一个Time limit exceeded,然后就试着回溯,果然1.372水过
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<math.h>
int ok,a[10],vis[10];
char b[]={'+','-','*'};
void dfs(int x,int sum)
{
int i,j,temp;
if(x==4)
{
if(sum==23)
{
printf("Possible\n");
ok=0;
}
return ;
}
for(i=0;i<5;i++)
{
if(ok&&!vis[i])
{
vis[i]=1;
for(j=0;j<3;j++)//尝试三种运算
{
if(b[j]=='+')
temp=sum+a[i];
else if(b[j]=='-')
temp=sum-a[i];
else if(b[j]=='*')
temp=sum*a[i];
dfs(x+1,temp);
}
vis[i]=0;//回溯
}
}
}
main()
{
int i;
//freopen("D:\\ppp.txt","r",stdin);
while(scanf("%d%d%d%d%d",&a[0],&a[1],&a[2],&a[3],&a[4])&&a[0]+a[1]+a[2]+a[3]+a[4])
{
ok=1;
for(i=0;i<5;i++)
{
memset(vis,0,sizeof(vis));
vis[i]=1;
dfs(0,a[i]);
if(ok==0) break;
}
if(ok)printf("Impossible\n");
}
return 0;
}