//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define el "\n"
#define MASK(i) (1LL<<(i))
#define BIT(i,j) (((i)>>(j))&1)
#define TIME 1.0*clock()/CLOCKS_PER_SEC
const ll MAX=2e3+3,MOD=1e9+7;
int n;
struct Point
{
int x,y;
bool operator <(const Point &other) const
{
if(x!=other.x) return x>other.x;
return y>other.y;
}
} p[MAX];
vector<int> v;
int getVal(int val)
{
return lower_bound(v.begin(),v.end(),val)-v.begin()+1;
}
void pre()
{
sort(v.begin(),v.end()); v.erase(unique(v.begin(),v.end()),v.end());
foru(i,1,n)
{
p[i].x=getVal(p[i].x);
p[i].y=getVal(p[i].y);
}
sort(p+1,p+n+1);
// foru(i,1,n) cout<<p[i].x<<' '<<p[i].y<<el;
}
ll fw[2*MAX][MAX];
void update(int pos, int pos1, ll val)
{
int j=pos1;
for(int i=pos; i<2*MAX; i+=i&(-i))
{
// for(int j=pos1; j<2*MAX; j+=j&(-j))
// {
fw[i][j]=(fw[i][j]+val)%MOD;
// }
}
}
ll query(int pos, int pos1)
{
ll ans=0;
int j=pos1;
for(int i=pos; i>0; i-=i&(-i))
{
// for(int j=pos1; j>0; j-=j&(-j))
// {
ans=(ans+fw[i][j])%MOD;
// }
}
return ans;
}
void calc()
{
int mx=0;
foru(i,1,n)
{
mx=max(mx,p[i].y);
update(p[i].y,1,1);
foru(l,2,n)
{
ll q=query(p[i].y-1,l-1);
// cout<<i<<' '<<l<<' '<<q<<el;
update(p[i].y,l,q);
}
// cout<<el;
}
foru(l,1,n)
{
cout<<query(mx,l)<<' ';
}
}
int main()
{
fastio
if(fopen(FILE ".inp","r"))
{
freopen(FILE ".inp","r",stdin);
freopen(FILE ".out","w",stdout);
}
cin>>n;
foru(i,1,n) cin>>p[i].x;
foru(i,1,n)
{
cin>>p[i].y;
v.pb(p[i].x);
v.pb(p[i].y);
}
pre();
calc();
return 0;
}
Ly9OaWNlRHVjawojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRklMRSAiMDAwIgojZGVmaW5lIGZvcnUoaSxhLGIpIGZvcihpbnQgaT0oaW50KShhKTsgaTw9KGludCkoYik7ICsraSkKI2RlZmluZSBmb3JkKGksYSxiKSBmb3IoaW50IGk9KGludCkoYSk7IGk+PShpbnQpKGIpOyAtLWkpCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBNQVNLKGkpICgxTEw8PChpKSkKI2RlZmluZSBCSVQoaSxqKSAoKChpKT4+KGopKSYxKQojZGVmaW5lIFRJTUUgMS4wKmNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMKCmNvbnN0IGxsIE1BWD0yZTMrMyxNT0Q9MWU5Kzc7CmludCBuOwpzdHJ1Y3QgUG9pbnQKewogICAgaW50IHgseTsKICAgIGJvb2wgb3BlcmF0b3IgPChjb25zdCBQb2ludCAmb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgaWYoeCE9b3RoZXIueCkgcmV0dXJuIHg+b3RoZXIueDsKICAgICAgICByZXR1cm4geT5vdGhlci55OwogICAgfQp9IHBbTUFYXTsKdmVjdG9yPGludD4gdjsKaW50IGdldFZhbChpbnQgdmFsKQp7CiAgICByZXR1cm4gbG93ZXJfYm91bmQodi5iZWdpbigpLHYuZW5kKCksdmFsKS12LmJlZ2luKCkrMTsKfQp2b2lkIHByZSgpCnsKICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOyB2LmVyYXNlKHVuaXF1ZSh2LmJlZ2luKCksdi5lbmQoKSksdi5lbmQoKSk7CiAgICBmb3J1KGksMSxuKQogICAgewogICAgICAgIHBbaV0ueD1nZXRWYWwocFtpXS54KTsKICAgICAgICBwW2ldLnk9Z2V0VmFsKHBbaV0ueSk7CiAgICB9CiAgICBzb3J0KHArMSxwK24rMSk7Ci8vICAgIGZvcnUoaSwxLG4pIGNvdXQ8PHBbaV0ueDw8JyAnPDxwW2ldLnk8PGVsOwp9CmxsIGZ3WzIqTUFYXVtNQVhdOwp2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgcG9zMSwgbGwgdmFsKQp7CiAgICBpbnQgaj1wb3MxOwogICAgZm9yKGludCBpPXBvczsgaTwyKk1BWDsgaSs9aSYoLWkpKQogICAgewovLyAgICAgICAgZm9yKGludCBqPXBvczE7IGo8MipNQVg7IGorPWomKC1qKSkKLy8gICAgICAgIHsKICAgICAgICAgICAgZndbaV1bal09KGZ3W2ldW2pdK3ZhbCklTU9EOwovLyAgICAgICAgfQogICAgfQp9CmxsIHF1ZXJ5KGludCBwb3MsIGludCBwb3MxKQp7CiAgICBsbCBhbnM9MDsKICAgIGludCBqPXBvczE7CiAgICBmb3IoaW50IGk9cG9zOyBpPjA7IGktPWkmKC1pKSkKICAgIHsKLy8gICAgICAgIGZvcihpbnQgaj1wb3MxOyBqPjA7IGotPWomKC1qKSkKLy8gICAgICAgIHsKICAgICAgICAgICAgYW5zPShhbnMrZndbaV1bal0pJU1PRDsKLy8gICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCnZvaWQgY2FsYygpCnsKICAgIGludCBteD0wOwogICAgZm9ydShpLDEsbikKICAgIHsKICAgICAgICBteD1tYXgobXgscFtpXS55KTsKICAgICAgICB1cGRhdGUocFtpXS55LDEsMSk7CiAgICAgICAgZm9ydShsLDIsbikKICAgICAgICB7CiAgICAgICAgICAgIGxsIHE9cXVlcnkocFtpXS55LTEsbC0xKTsKLy8gICAgICAgICAgICBjb3V0PDxpPDwnICc8PGw8PCcgJzw8cTw8ZWw7CiAgICAgICAgICAgIHVwZGF0ZShwW2ldLnksbCxxKTsKICAgICAgICB9Ci8vICAgICAgICBjb3V0PDxlbDsKICAgIH0KICAgIGZvcnUobCwxLG4pCiAgICB7CiAgICAgICAgY291dDw8cXVlcnkobXgsbCk8PCcgJzsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBmYXN0aW8KICAgIGlmKGZvcGVuKEZJTEUgIi5pbnAiLCJyIikpCiAgICB7CiAgICAgICAgZnJlb3BlbihGSUxFICIuaW5wIiwiciIsc3RkaW4pOwogICAgICAgIGZyZW9wZW4oRklMRSAiLm91dCIsInciLHN0ZG91dCk7CiAgICB9CiAgICBjaW4+Pm47CiAgICBmb3J1KGksMSxuKSBjaW4+PnBbaV0ueDsKICAgIGZvcnUoaSwxLG4pCiAgICB7CiAgICAgICAgY2luPj5wW2ldLnk7CiAgICAgICAgdi5wYihwW2ldLngpOwogICAgICAgIHYucGIocFtpXS55KTsKICAgIH0KICAgIHByZSgpOwogICAgY2FsYygpOwoKICAgIHJldHVybiAwOwp9Cg==