// PhuThuyRuntime <3
// A secret makes a woman woman
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define fo(i, l, r) for(int i = l; i <= r; i++)
#define foi(i, l, r) for(int i = l; i >= r; i--)
#define elif else if
#define el cout << "\n";
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define pil pair<int, ll>
#define fi first
#define se second
#define in(x) freopen(x, "r", stdin)
#define out(x) freopen(x, "w", stdout)
#define ll long long
#define ull unsigned long long
#define pob pop_back
#define bs binary_search
#define vi vector<int>
#define vii vector<pair<int, int>>
#define getbit(i, j) (i >> j) & 1
#define offbit(i, j) (1 << j) ^ i
#define onbit(i, j) (1 << j) | i
const int N = 1e5 + 2;
const ll mod = 1e9 + 7;
const int inf = INT_MAX;
const int base = 31;
const long double EPS = 1e-9;
const long double pi = acos(-1.0);
int n;
pii a[2002];
void inp(){
cin >> n;
fo(i, 1, n) cin >> a[i].fi;
fo(i, 1, n) cin >> a[i].se;
}
bool cmp(pii a, pii b){
return a.fi > b.fi;
}
ll dp[2][2002];
ll bit[2002];
void update(int u, ll val){
while(u <= n){
bit[u] = (bit[u] + val) % mod;
u += u & -u;
}
}
ll get(int u){
ll ans = 0;
while(u){
ans = (ans + bit[u]) % mod;
u -= u & -u;
}
return ans;
}
void sol(){
sort(a + 1, a + n + 1, cmp);
vi zip;
fo(i, 1, n) zip.emplace_back(a[i].se);
sort(zip.begin(), zip.end());
zip.erase(unique(zip.begin(), zip.end()), zip.end());
fo(j, 1, n){
ll ans = 0;
fo(i, 1, n){
int id = lower_bound(zip.begin(), zip.end(), a[i].se) - zip.begin() + 1;
dp[j & 1][i] = (j == 1 ? 1 : get(id - 1));
update(id, dp[(j & 1) ^ 1][i]);
ans = (ans + dp[j & 1][i]) % mod;
}
memset(bit, 0, sizeof(bit));
cout << ans << ' ';
}
}
int main(){
// in("lctour.inp");
// out("lctour.out");
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
inp();
sol();
return 0;
}
Ly8gUGh1VGh1eVJ1bnRpbWUgPDMKLy8gQSBzZWNyZXQgbWFrZXMgYSB3b21hbiB3b21hbgoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmbyhpLCBsLCByKSBmb3IoaW50IGkgPSBsOyBpIDw9IHI7IGkrKykKI2RlZmluZSBmb2koaSwgbCwgcikgZm9yKGludCBpID0gbDsgaSA+PSByOyBpLS0pCiNkZWZpbmUgZWxpZiBlbHNlIGlmCiNkZWZpbmUgZWwgY291dCA8PCAiXG4iOwojZGVmaW5lIHBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIHBsaSBwYWlyPGxsLCBpbnQ+CiNkZWZpbmUgcGxsIHBhaXI8bGwsIGxsPgojZGVmaW5lIHBpbCBwYWlyPGludCwgbGw+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbih4KSBmcmVvcGVuKHgsICJyIiwgc3RkaW4pCiNkZWZpbmUgb3V0KHgpIGZyZW9wZW4oeCwgInciLCBzdGRvdXQpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIHBvYiBwb3BfYmFjawojZGVmaW5lIGJzIGJpbmFyeV9zZWFyY2gKI2RlZmluZSB2aSB2ZWN0b3I8aW50PgojZGVmaW5lIHZpaSB2ZWN0b3I8cGFpcjxpbnQsIGludD4+CiNkZWZpbmUgZ2V0Yml0KGksIGopIChpID4+IGopICYgMQojZGVmaW5lIG9mZmJpdChpLCBqKSAoMSA8PCBqKSBeIGkKI2RlZmluZSBvbmJpdChpLCBqKSAoMSA8PCBqKSB8IGkKY29uc3QgaW50IE4gPSAxZTUgKyAyOwpjb25zdCBsbCBtb2QgPSAxZTkgKyA3Owpjb25zdCBpbnQgaW5mID0gSU5UX01BWDsKY29uc3QgaW50IGJhc2UgPSAzMTsKY29uc3QgbG9uZyBkb3VibGUgRVBTID0gMWUtOTsKY29uc3QgbG9uZyBkb3VibGUgcGkgPSBhY29zKC0xLjApOwppbnQgbjsKcGlpIGFbMjAwMl07CnZvaWQgaW5wKCl7CiAgICAgY2luID4+IG47CiAgICAgZm8oaSwgMSwgbikgY2luID4+IGFbaV0uZmk7CiAgICAgZm8oaSwgMSwgbikgY2luID4+IGFbaV0uc2U7Cn0KYm9vbCBjbXAocGlpIGEsIHBpaSBiKXsKICAgICByZXR1cm4gYS5maSA+IGIuZmk7Cn0KbGwgZHBbMl1bMjAwMl07CmxsIGJpdFsyMDAyXTsKdm9pZCB1cGRhdGUoaW50IHUsIGxsIHZhbCl7CiAgICAgd2hpbGUodSA8PSBuKXsKICAgICAgICAgIGJpdFt1XSA9IChiaXRbdV0gKyB2YWwpICUgbW9kOwogICAgICAgICAgdSArPSB1ICYgLXU7CiAgICAgfQp9CmxsIGdldChpbnQgdSl7CiAgICAgbGwgYW5zID0gMDsKICAgICB3aGlsZSh1KXsKICAgICAgICAgIGFucyA9IChhbnMgKyBiaXRbdV0pICUgbW9kOwogICAgICAgICAgdSAtPSB1ICYgLXU7CiAgICAgfQogICAgIHJldHVybiBhbnM7Cn0Kdm9pZCBzb2woKXsKICAgICBzb3J0KGEgKyAxLCBhICsgbiArIDEsIGNtcCk7CiAgICAgdmkgemlwOwogICAgIGZvKGksIDEsIG4pIHppcC5lbXBsYWNlX2JhY2soYVtpXS5zZSk7CiAgICAgc29ydCh6aXAuYmVnaW4oKSwgemlwLmVuZCgpKTsKICAgICB6aXAuZXJhc2UodW5pcXVlKHppcC5iZWdpbigpLCB6aXAuZW5kKCkpLCB6aXAuZW5kKCkpOwogICAgIGZvKGosIDEsIG4pewogICAgICAgICAgbGwgYW5zID0gMDsKICAgICAgICAgIGZvKGksIDEsIG4pewogICAgICAgICAgICAgICBpbnQgaWQgPSBsb3dlcl9ib3VuZCh6aXAuYmVnaW4oKSwgemlwLmVuZCgpLCBhW2ldLnNlKSAtIHppcC5iZWdpbigpICsgMTsKICAgICAgICAgICAgICAgZHBbaiAmIDFdW2ldID0gKGogPT0gMSA/IDEgOiBnZXQoaWQgLSAxKSk7CiAgICAgICAgICAgICAgIHVwZGF0ZShpZCwgZHBbKGogJiAxKSBeIDFdW2ldKTsKICAgICAgICAgICAgICAgYW5zID0gKGFucyArIGRwW2ogJiAxXVtpXSkgJSBtb2Q7CiAgICAgICAgICB9CiAgICAgICAgICBtZW1zZXQoYml0LCAwLCBzaXplb2YoYml0KSk7CiAgICAgICAgICBjb3V0IDw8IGFucyA8PCAnICc7CiAgICAgfQp9CmludCBtYWluKCl7Ci8vICAgICBpbigibGN0b3VyLmlucCIpOwovLyAgICAgb3V0KCJsY3RvdXIub3V0Iik7CiAgICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICAgY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7CiAgICAgaW5wKCk7CiAgICAgc29sKCk7CiAgICAgcmV0dXJuIDA7Cn0K