#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
struct Motel {
int x,y,z;
bool operator() (const Motel &x,const Motel &y){
if(x.x != y.x)
return x.x < y.x;
if(x.x == y.x)
return x.y < y.y;
};
};
int main (){
ifstream in ("motel.in");
ofstream out ("motel.out");
int n,i;
in>>n;
vector<Motel> a(n);
vector<vector<int> >b(n,vector<int>(2));
for(i=0;i<n;i++){
in>>a[i].x>>a[i].y;
a[i].z = i + 1;
}
sort(a.begin(),a.end(),Motel());
for(i=0;i<n;i++){
in>>b[i][0];
b[i][1] = i + 1;
}
sort(b.begin(),b.end());
for(i=0;i<n;i++){
if(a[i].x <= b[i][0] && a[i].y >= b[i][0])
b[i][0] = a[i].z;
else
break;
}
if(i<n)
out<<0<<" "<<0<<"\n";
else
for(i=0;i<n;i++)
out<<b[i][0]<<" "<<b[i][1]<<"\n";
return 0;
}
uite codul si in ultima parte ce returnez