dp求期望
double dp[1024][111];//dp[i][j]第i round到j格的機率bool stop[111];int go[111];int n;int main(){ while(scanf("%d",&n) !=-1){ int i,j; int m; memset(go,0,sizeof(go)); memset(stop,0,sizeof(stop)); scanf("%d",&m); while(m--){ int pos,num; scanf("%d%d",&pos,&num); go[pos]+=num; } scanf("%d",&m); while(m--){ int pos,num; scanf("%d%d",&pos,&num); go[pos]-=num; } scanf("%d",&m); while(m--){ int pos; scanf("%d",&pos); stop[pos] = true; } memset(dp,0,sizeof(dp)); dp[0][0] = 1.0; double per = 1.0/6.0; for(i=0;i<1000;i++){ for(j=0;j<n;j++){ if(dp[i][j]>0){ for(int k=1;k<=6;k++){ int next = k+j; if(next>n){ int res = next%n; next = n-res; } if(stop[next]){ dp[i+2][next] += dp[i][j]*per; } else { next += go[next]; if(next>n){ int res = next%n; next = n-res; } else if(next<0)next =-next; dp[i+1][next] += dp[i][j]*per; } } } } } double ans = 0; for(i=0;i<1000;i++){ ans += dp[i][n]*i; } if(ans<eps)puts("Impossible"); else printf("%.2lf\n",ans); } return 0;}