#include<iostream> #include<cstring> using namespace std; int trie[510000][26],bianhao[510000][26],degree[510000],f[510000],n,r; int insert(char *color) { int i,j,k,l; l=strlen(color); j=0; for(i=0;i<l;i++) { k=color[i]-'a'; if(trie[j][k]==0) j=trie[j][k]=++r; else j=trie[j][k]; } if(bianhao[j][k]==0) bianhao[j][k]=++n; return bianhao[j][k]; } int find(int x) { while(f[x]!=0&&f[x]!=x) x=f[x]; return x; } int main() { int i,sum,a,b; char temp1[11],temp2[11]; n=r=0; memset(f,0,sizeof(f)); memset(degree,0,sizeof(degree)); memset(trie,0,sizeof(trie)); memset(bianhao,0,sizeof(bianhao)); while(scanf("%s %s",temp1,temp2)!=EOF) { a=insert(temp1); b=insert(temp2); degree[a]++; degree[b]++; f[find(b)]=find(a); } sum=0; for(i=1;i<=n;i++) { if(find(i)==i) sum++; if(sum>1) { printf("Impossible\n"); return 0; } } sum=0; for(i=1;i<=n;i++) if(degree[i]%2!=0) sum++; if(sum>2) printf("Impossible\n"); else printf("Possible\n"); }