B. Spongebob and Joke



time limit per test



memory limit per test



input



output


a1, a2, ..., am of length m, consisting of integers from 1 to n, not necessarily distinct. Then he picked some sequence f1, f2, ..., fn of length n and for each number ai got number bi = fai. To finish the prank he erased the initial sequence ai.

It's hard to express how sad Patrick was when he returned home from shopping! We will just say that Spongebob immediately got really sorry about what he has done and he is now trying to restore the original sequence. Help him do this or determine that this is impossible.


Input



n and m (1 ≤ n, m ≤ 100 000) — the lengths of sequences fi and bi

n integers, determining sequence f1, f2, ..., fn (1 ≤ fi ≤ n).

m integers, determining sequence b1, b2, ..., bm (1 ≤ bi ≤ n).


Output



Possible" if there is exactly one sequence ai, such that bi = fai for all i from 1 to m. Then print m integers a1, a2, ..., am.

ai, print "Ambiguity".

ai exists, print "Impossible".


Sample test(s)



input



3 3 3 2 1 1 2 3



output



Possible 3 2 1



input



3 3 1 1 1 1 1 1



output



Ambiguity



input



3 3 1 2 1 3 3 3



output



Impossible


Note



3 is replaced by 1 and vice versa, while 2

1, so it is impossible to unambiguously restore the original sequence.

fi for all i, so no sequence ai transforms into such bi

#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define ll long long
#define mp make_pair
#define f first
#define s second
#define pii pair < int, int >
#define pll pair < ll, ll >
#define all(s) s.begin(), s.end()
#define sz(s) (int) s.size()
#define vi vector < int >


const int inf = (1ll << 31) - 1;
const int mod = (int) 1e9 + 7;

int cnt[100100];
int f[100100];
int b[100100];
int pos[100100];
int n, m;

int main () {
#ifdef LOCAL
freopen ("a.in", "r", stdin);
freopen ("a.out", "w", stdout);
#endif
cin >> n >> m;
for(int i = 0; i < n; i++) {
cin >> f[i];
cnt[f[i]]++;
pos[f[i]] = i;
}

for(int i = 0; i < m; i++){
cin >> b[i];
}
for(int i = 0; i<m; i++){
if(cnt[b[i]] == 0 ){
cout << "Impossible\n";
return 0;
}
}
for(int i = 0; i<m; i++){
if(cnt[b[i]] > 1){
cout << "Ambiguity\n";
return 0;
}
}
cout << "Possible\n";
for(int i = 0; i < m; i++){
cout << pos[b[i]] + 1 << " ";
}




#ifdef LOCAL
cerr << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif

return 0;
}