#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define REP(i,b) FOR(i,0,b)
#define PB push_back
using namespace std;
typedef long long ll;
inline int Pack(int x,bool b){
return (x<<1)+b;
}
inline int Idx(int x){
return x>>1;
}
inline int Flag(int x){
return x&1;
}
inline int Not(int x){
return x^1;
}
struct TwoSAT{
static const int maxN = 100000*2;
static const int maxM = 100000*2;
int m,edge[maxM][2];
TwoSAT():m(0),t(-1){
memset(last,-1,sizeof(last));
memset(pushed,false,sizeof(pushed));
}
void Add(int x,int y){
edge[m][0]=Not(x);
edge[m++][1]=y;
edge[m][0]=Not(y);
edge[m++][1]=x;
}
int t,last[maxN];
int s,use[maxN];
void Mark(int x){
if(last[x]<t){
last[x]=t;
use[s++]=x;
}
}
vector<int> graph[maxN];
int sSize,sBuf[maxN];
void Push(int x){
sBuf[sSize++]=x;
}
int Pop(){
return sBuf[--sSize];
}
bool pushed[maxN];
int num,ord[maxN],low[maxN],group[maxN],cmps;
void scc(int v){
Push(v);
pushed[v]=true;
ord[v]=low[v]=num++;
for(auto i:graph[v]){
if(ord[i]==-1){
scc(i);
low[v]=min(low[v],low[i]);
}else if(pushed[i])
low[v]=min(low[v],ord[i]);
}
if(ord[v]==low[v]){
while(1){
int x=Pop();
pushed[x]=false;
group[x]=cmps;
if(x==v)
break;
}
cmps++;
}
}
bool SAT(int b,int e){
b*=2;
e*=2;
s=0;
t++;
FOR(i,b,e){
Mark(edge[i][0]);
Mark(edge[i][1]);
}
REP(_,s){
int i=use[_];
graph[i].clear();
ord[i]=low[i]=-1;
}
FOR(i,b,e)
graph[edge[i][0]].PB(edge[i][1]);
sSize=0;
num=0;
cmps=0;
REP(_,s){
int i=use[_];
if(ord[i]==-1)
scc(i);
}
REP(_,s){
int i=use[_];
if(group[i]==group[Not(i)])
return false;
}
return true;
}
} tSat;
int read(){
int i;
scanf("%d",&i);
return i;
}
const int maxN=100000;
const int maxM=100000;
int s[maxM][2],group[maxM*2],ch[maxM*2][2],w[maxM*2];
vector<int> member[maxM*2];
bool ans[maxM*2];
void dfs(int v,int l,int r,int p){
if(l+1==r)
return;
if(p==-1){
int a=l,b=r+1;
while(b-a>=2){
int mid=(a+b)/2;
if(tSat.SAT(l,mid))
a=mid;
else
b=mid;
}
p=a;
}
ans[v]=r<=p;
dfs(ch[v][0],l,l+w[v],p);
if(r<=p)
dfs(ch[v][1],l+w[v],r,p);
else
dfs(ch[v][1],l+w[v],r,-1);
}
int main(){
read();
int m=read();
REP(i,m){
int a=read(),b=read();
s[i][0]=Not(Pack(abs(a)-1,a>0));
s[i][1]=Not(Pack(abs(b)-1,b>0));
}
REP(i,m)
member[i].PB(i);
FOR(i,m,m*2-1){
int a=read()-1,b=read()-1;
if(member[a].size()<member[b].size())
swap(a,b);
ch[i][0]=a;
ch[i][1]=b;
w[i]=member[a].size();
swap(member[i],member[a]);
copy(member[b].begin(),member[b].end(),back_inserter(member[i]));
}
for(auto i:member[m*2-2])
tSat.Add(s[i][0],s[i][1]);
dfs(m*2-2,0,m,-1);
FOR(i,m,m*2-1)
printf(ans[i]?"Possible\n":"Impossible\n");
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKI2RlZmluZSBGT1IoaSxhLGIpIGZvcihpbnQgaT1hO2k8YjtpKyspCiNkZWZpbmUgUkVQKGksYikgRk9SKGksMCxiKQojZGVmaW5lIFBCIHB1c2hfYmFjawogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiAKaW5saW5lIGludCBQYWNrKGludCB4LGJvb2wgYil7CglyZXR1cm4gKHg8PDEpK2I7Cn0KIAppbmxpbmUgaW50IElkeChpbnQgeCl7CglyZXR1cm4geD4+MTsKfQogCmlubGluZSBpbnQgRmxhZyhpbnQgeCl7CglyZXR1cm4geCYxOwp9CiAKaW5saW5lIGludCBOb3QoaW50IHgpewoJcmV0dXJuIHheMTsKfQogCnN0cnVjdCBUd29TQVR7CglzdGF0aWMgY29uc3QgaW50IG1heE4gPSAxMDAwMDAqMjsKCXN0YXRpYyBjb25zdCBpbnQgbWF4TSA9IDEwMDAwMCoyOwoJaW50IG0sZWRnZVttYXhNXVsyXTsKCVR3b1NBVCgpOm0oMCksdCgtMSl7CgkJbWVtc2V0KGxhc3QsLTEsc2l6ZW9mKGxhc3QpKTsKCQltZW1zZXQocHVzaGVkLGZhbHNlLHNpemVvZihwdXNoZWQpKTsKCX0KCXZvaWQgQWRkKGludCB4LGludCB5KXsKCQllZGdlW21dWzBdPU5vdCh4KTsKCQllZGdlW20rK11bMV09eTsKCQllZGdlW21dWzBdPU5vdCh5KTsKCQllZGdlW20rK11bMV09eDsKCX0KCWludCB0LGxhc3RbbWF4Tl07CglpbnQgcyx1c2VbbWF4Tl07Cgl2b2lkIE1hcmsoaW50IHgpewoJCWlmKGxhc3RbeF08dCl7CgkJCWxhc3RbeF09dDsKCQkJdXNlW3MrK109eDsKCQl9Cgl9Cgl2ZWN0b3I8aW50PiBncmFwaFttYXhOXTsKCWludCBzU2l6ZSxzQnVmW21heE5dOwoJdm9pZCBQdXNoKGludCB4KXsKCQlzQnVmW3NTaXplKytdPXg7Cgl9CglpbnQgUG9wKCl7CgkJcmV0dXJuIHNCdWZbLS1zU2l6ZV07Cgl9Cglib29sIHB1c2hlZFttYXhOXTsKCWludCBudW0sb3JkW21heE5dLGxvd1ttYXhOXSxncm91cFttYXhOXSxjbXBzOwoJdm9pZCBzY2MoaW50IHYpewoJCVB1c2godik7CgkJcHVzaGVkW3ZdPXRydWU7CgkJb3JkW3ZdPWxvd1t2XT1udW0rKzsKCQlmb3IoYXV0byBpOmdyYXBoW3ZdKXsKCQkJaWYob3JkW2ldPT0tMSl7CgkJCQlzY2MoaSk7CgkJCQlsb3dbdl09bWluKGxvd1t2XSxsb3dbaV0pOwoJCQl9ZWxzZSBpZihwdXNoZWRbaV0pCgkJCQlsb3dbdl09bWluKGxvd1t2XSxvcmRbaV0pOwoJCX0KCQlpZihvcmRbdl09PWxvd1t2XSl7CgkJCXdoaWxlKDEpewoJCQkJaW50IHg9UG9wKCk7CgkJCQlwdXNoZWRbeF09ZmFsc2U7CgkJCQlncm91cFt4XT1jbXBzOwoJCQkJaWYoeD09dikKCQkJCQlicmVhazsKCQkJfQoJCQljbXBzKys7CgkJfQoJfQoJYm9vbCBTQVQoaW50IGIsaW50IGUpewoJCWIqPTI7CgkJZSo9MjsKCQlzPTA7CgkJdCsrOwoJCUZPUihpLGIsZSl7CgkJCU1hcmsoZWRnZVtpXVswXSk7CgkJCU1hcmsoZWRnZVtpXVsxXSk7CgkJfQoJCVJFUChfLHMpewoJCQlpbnQgaT11c2VbX107CgkJCWdyYXBoW2ldLmNsZWFyKCk7CgkJCW9yZFtpXT1sb3dbaV09LTE7CgkJfQoJCUZPUihpLGIsZSkKCQkJZ3JhcGhbZWRnZVtpXVswXV0uUEIoZWRnZVtpXVsxXSk7CgkJc1NpemU9MDsKCQludW09MDsKCQljbXBzPTA7CgkJUkVQKF8scyl7CgkJCWludCBpPXVzZVtfXTsKCQkJaWYob3JkW2ldPT0tMSkKCQkJCXNjYyhpKTsKCQl9CgkJUkVQKF8scyl7CgkJCWludCBpPXVzZVtfXTsKCQkJaWYoZ3JvdXBbaV09PWdyb3VwW05vdChpKV0pCgkJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCXJldHVybiB0cnVlOwoJfQp9IHRTYXQ7CiAKaW50IHJlYWQoKXsKCWludCBpOwoJc2NhbmYoIiVkIiwmaSk7CglyZXR1cm4gaTsKfQogCmNvbnN0IGludCBtYXhOPTEwMDAwMDsKY29uc3QgaW50IG1heE09MTAwMDAwOwppbnQgc1ttYXhNXVsyXSxncm91cFttYXhNKjJdLGNoW21heE0qMl1bMl0sd1ttYXhNKjJdOwp2ZWN0b3I8aW50PiBtZW1iZXJbbWF4TSoyXTsKYm9vbCBhbnNbbWF4TSoyXTsKIAp2b2lkIGRmcyhpbnQgdixpbnQgbCxpbnQgcixpbnQgcCl7CglpZihsKzE9PXIpCgkJcmV0dXJuOwoJaWYocD09LTEpewoJCWludCBhPWwsYj1yKzE7CgkJd2hpbGUoYi1hPj0yKXsKCQkJaW50IG1pZD0oYStiKS8yOwoJCQlpZih0U2F0LlNBVChsLG1pZCkpCgkJCQlhPW1pZDsKCQkJZWxzZQoJCQkJYj1taWQ7CgkJfQoJCXA9YTsKCX0KCWFuc1t2XT1yPD1wOwoJZGZzKGNoW3ZdWzBdLGwsbCt3W3ZdLHApOwoJaWYocjw9cCkKCQlkZnMoY2hbdl1bMV0sbCt3W3ZdLHIscCk7CgllbHNlCgkJZGZzKGNoW3ZdWzFdLGwrd1t2XSxyLC0xKTsKfQogCmludCBtYWluKCl7CglyZWFkKCk7CglpbnQgbT1yZWFkKCk7CglSRVAoaSxtKXsKCQlpbnQgYT1yZWFkKCksYj1yZWFkKCk7CgkJc1tpXVswXT1Ob3QoUGFjayhhYnMoYSktMSxhPjApKTsKCQlzW2ldWzFdPU5vdChQYWNrKGFicyhiKS0xLGI+MCkpOwoJfQoJUkVQKGksbSkKCQltZW1iZXJbaV0uUEIoaSk7CglGT1IoaSxtLG0qMi0xKXsKCQlpbnQgYT1yZWFkKCktMSxiPXJlYWQoKS0xOwoJCWlmKG1lbWJlclthXS5zaXplKCk8bWVtYmVyW2JdLnNpemUoKSkKCQkJc3dhcChhLGIpOwoJCWNoW2ldWzBdPWE7CgkJY2hbaV1bMV09YjsKCQl3W2ldPW1lbWJlclthXS5zaXplKCk7CgkJc3dhcChtZW1iZXJbaV0sbWVtYmVyW2FdKTsKCQljb3B5KG1lbWJlcltiXS5iZWdpbigpLG1lbWJlcltiXS5lbmQoKSxiYWNrX2luc2VydGVyKG1lbWJlcltpXSkpOwoJfQoJZm9yKGF1dG8gaTptZW1iZXJbbSoyLTJdKQoJCXRTYXQuQWRkKHNbaV1bMF0sc1tpXVsxXSk7CglkZnMobSoyLTIsMCxtLC0xKTsKCUZPUihpLG0sbSoyLTEpCgkJcHJpbnRmKGFuc1tpXT8iUG9zc2libGVcbiI6IkltcG9zc2libGVcbiIpOwp9