#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int n;
cin>> n;
vector<int> ml(n,0), fl(n,0);
for(int i=0; i<n; i++){
cin>>ml[i];
}
for(int i=0; i<n; i++){
cin>>fl[i];
}
sort(ml.begin(), ml.end(), greater<int>());
sort(fl.begin(), fl.end());
int pm=0,pf=0;
// for(int i=0; i<n; i++){
// cout<<ml[i]<<" "<<fl[i]<<endl;
// }
int count = 0;
while(pm<n && pf<n){
int m = ml[pm];
int f = fl[pf];
// can be pairs??
if(m*f<0){
// they meet their choice?
if(m<0){
if(-m>f){
count++;
cout<<pm<<" "<<pf<<endl;
pm++;
pf++;
}
// m is -ve, f is +ve but |m| <= |f|
// ab right me hi ja skte h.
// right me |m| will increase.
// right me |f| will increase.
// we want larger m and smaller f
else{
pm++;
}
}
else{
if(m<-f){
count++;
cout<<pm<<" "<<pf<<endl;
pm++;
pf++;
}
// m is +ve, f is -ve but |m| >= |f|
// ab right me hi ja skte h.
// right me |m| will decrease.
// right me |f| will decrease.
// we want smaller m and larger f
else{
pm++;
}
}
}
else{
// both +ve
if(m>0){
while(ml[pm]>0){
pm++;
}
}
// both -ve
else if(f<0){
while(fl[pf]<0){
pf++;
}
}
}
}
cout << count;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJCglpbnQgbjsKCWNpbj4+IG47CgkKCXZlY3RvcjxpbnQ+IG1sKG4sMCksIGZsKG4sMCk7CgkKCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJY2luPj5tbFtpXTsKCX0KCWZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkJY2luPj5mbFtpXTsKCX0KCQoJc29ydChtbC5iZWdpbigpLCBtbC5lbmQoKSwgZ3JlYXRlcjxpbnQ+KCkpOwoJc29ydChmbC5iZWdpbigpLCBmbC5lbmQoKSk7CgkKCWludCBwbT0wLHBmPTA7CgkKCS8vIGZvcihpbnQgaT0wOyBpPG47IGkrKyl7CgkvLyAJY291dDw8bWxbaV08PCIgIjw8ZmxbaV08PGVuZGw7CgkvLyB9CgkKCWludCBjb3VudCA9IDA7CgkKCXdoaWxlKHBtPG4gJiYgcGY8bil7CgkJaW50IG0gPSBtbFtwbV07CgkJaW50IGYgPSBmbFtwZl07CgkJCgkJLy8gY2FuIGJlIHBhaXJzPz8KCQlpZihtKmY8MCl7CgkJCS8vIHRoZXkgbWVldCB0aGVpciBjaG9pY2U/CgkJCWlmKG08MCl7CgkJCQlpZigtbT5mKXsKCQkJCQljb3VudCsrOwoJCQkJCWNvdXQ8PHBtPDwiICI8PHBmPDxlbmRsOwoJCQkJCXBtKys7CgkJCQkJcGYrKzsKCQkJCQkKCQkJCX0KCQkJCS8vIG0gaXMgLXZlLCBmIGlzICt2ZSBidXQgfG18IDw9IHxmfAoJCQkJLy8gYWIgcmlnaHQgbWUgaGkgamEgc2t0ZSBoLgoJCQkJLy8gcmlnaHQgbWUgfG18IHdpbGwgaW5jcmVhc2UuCgkJCQkvLyByaWdodCBtZSB8Znwgd2lsbCBpbmNyZWFzZS4KCQkJCS8vIHdlIHdhbnQgbGFyZ2VyIG0gYW5kIHNtYWxsZXIgZgoJCQkJZWxzZXsKCQkJCQlwbSsrOwoJCQkJfQoJCQl9CgkJCWVsc2V7CgkJCQlpZihtPC1mKXsKCQkJCQljb3VudCsrOwoJCQkJCWNvdXQ8PHBtPDwiICI8PHBmPDxlbmRsOwoJCQkJCXBtKys7CgkJCQkJcGYrKzsKCQkJCX0KCQkJCS8vIG0gaXMgK3ZlLCBmIGlzIC12ZSBidXQgfG18ID49IHxmfAoJCQkJLy8gYWIgcmlnaHQgbWUgaGkgamEgc2t0ZSBoLgoJCQkJLy8gcmlnaHQgbWUgfG18IHdpbGwgZGVjcmVhc2UuCgkJCQkvLyByaWdodCBtZSB8Znwgd2lsbCBkZWNyZWFzZS4KCQkJCS8vIHdlIHdhbnQgc21hbGxlciBtIGFuZCBsYXJnZXIgZgoJCQkJZWxzZXsKCQkJCQlwbSsrOwoJCQkJfQoJCQkJCgkJCX0KCQl9CgkJZWxzZXsKCQkJLy8gYm90aCArdmUKCQkJaWYobT4wKXsKCQkJCXdoaWxlKG1sW3BtXT4wKXsKCQkJCQlwbSsrOwoJCQkJfQoJCQl9CgkJCS8vIGJvdGggLXZlCgkJCWVsc2UgaWYoZjwwKXsKCQkJCXdoaWxlKGZsW3BmXTwwKXsKCQkJCQlwZisrOwoJCQkJfQoJCQl9CgkJfQoJfQoJCgljb3V0IDw8IGNvdW50OwoJCglyZXR1cm4gMDsKfQ==