#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
pair<int, int> ab[n]; // a is given front, b is back
for(int i = 0; i < n; i++)
cin >> ab[i].first >> ab[i].second;
int c[n]; // bessie front
for(int i = 0; i < n; i++)
cin >> c[i];
bool used[n] = {};
vector<int> coords;
for(int i = 0; i < n; i++) // c
{
for(int j = 0; j < n; j++) // ab
{
if(!used[j] && (c[i] == ab[j].first || c[i] == ab[j].second))
{
coords.push_back(j);
used[j] = true;
break;
}
}
}
if(coords.size() == n) // matches everything
{
cout << "possible\n";
for(int i = 0; i < coords.size(); i++)
cout << coords[i] << "\n";
return 0;
}
cout << "impossible" << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGludCBuOwogICAgY2luID4+IG47CiAgICAKICAgIHBhaXI8aW50LCBpbnQ+IGFiW25dOyAvLyBhIGlzIGdpdmVuIGZyb250LCBiIGlzIGJhY2sKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgY2luID4+IGFiW2ldLmZpcnN0ID4+IGFiW2ldLnNlY29uZDsKICAgIAogICAgaW50IGNbbl07ICAgICAgICAgICAvLyBiZXNzaWUgZnJvbnQKCQogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBjaW4gPj4gY1tpXTsKICAgIAogICAgYm9vbCB1c2VkW25dID0ge307CiAgICAKICAgIHZlY3RvcjxpbnQ+IGNvb3JkczsKICAgIAogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykgLy8gYwogICAgewogICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBuOyBqKyspIC8vIGFiCiAgICAgICAgewogICAgICAgICAgICBpZighdXNlZFtqXSAmJiAoY1tpXSA9PSBhYltqXS5maXJzdCB8fCBjW2ldID09IGFiW2pdLnNlY29uZCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvb3Jkcy5wdXNoX2JhY2soaik7CiAgICAgICAgICAgICAgICB1c2VkW2pdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICBpZihjb29yZHMuc2l6ZSgpID09IG4pIC8vIG1hdGNoZXMgZXZlcnl0aGluZwogICAgewogICAgICAgIGNvdXQgPDwgInBvc3NpYmxlXG4iOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBjb29yZHMuc2l6ZSgpOyBpKyspCiAgICAgICAgICAgIGNvdXQgPDwgY29vcmRzW2ldIDw8ICJcbiI7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICAKICAgIGNvdXQgPDwgImltcG9zc2libGUiIDw8ICJcbiI7CiAgICByZXR1cm4gMDsKfQ==