#include <bits/stdc++.h>
#define rep(i,n) for(int i = 0; i < (n); i++)
using namespace std;
typedef long long ll;

int main(){
    cin.tie(0);
    ios::sync_with_stdio(0);

    ll N; cin >> N;
    vector<ll> a(N), b(N), c(N);
    rep(i,N) cin >> a[i];
    rep(i,N) cin >> b[i];
    ll ma = a[0];
    c[0] = a[0] * b[0];
    for(int i = 1; i < N; i++){
        ma = max(ma, a[i]);
        c[i] = max(c[i - 1], ma * b[i]);
    }
    rep(i,N) cout << c[i] << endl;
}
//                  //
//     Radmanシ     //
//                 //
#include<iostream>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<stack>

using namespace std;

//#define int long long

typedef pair<int,int> pii;
typedef pair<pii,int> ppi;
typedef pair<int,pii> pip;
#define F first
#define S second

const int maxn=2e5+5,maxlog=17;
int a[maxn],b[maxn],mark[maxn];
vector<int> v,yal[maxn];
map<int,int> mp;
int ans=0;

void dfs(int now)
{
   mark[now]=1;
   if(!b[a[now]])
   {
      b[a[now]]=1;
      v.push_back(a[now]);
      ans++;
   }
   for(int i=0;i<yal[now].size();i++)
   {
      int next=yal[now][i];
      if(mark[next])
         continue;
      dfs(next);
   }
}

int32_t main()
{ 
   ios_base::sync_with_stdio(false);
   cin.tie(0),cout.tie(0);
   int n;
   cin>>n;
   for(int i=1;i<=n;i++)
      cin>>a[i];
   for(int i=1;i<=n/2;i++)
   {
      yal[i].push_back(n-i+1);
      yal[n-i+1].push_back(i);
   }
   for(int i=1;i<=n;i++)
   {
      if(mp[a[i]])
      {
         yal[i].push_back(mp[a[i]]);
         yal[mp[a[i]]].push_back(i);
         mp[a[i]]=i;
      }
      mp[a[i]]=i;
   }
   for(int i=1;i<=n;i++)
   {
      if(mark[i])
         continue;
      dfs(i);
      while(v.size())
      {
         int l=v.back();
         v.pop_back();
         b[l]=0;
      }
      ans--;
   }
   cout<<ans<<endl;
   return 0;
}