#include <bits/stdc++.h>
using namespace std;
#define int long long
#define vi vector<int>
#define fi first
#define se second
#define pb push_back
#define ii pair<int , int>
#define pq priority_queue
#define iii pair<int , pair<int , int>>
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define fod(i,r,l) for(int i=r;i>=l;i--)
#define fill(f,x) memset(f,x,sizeof(f))
#define NAME "file"

const int N = 2e5 + 5, mod = 1e9 + 7;
int n , q;
int p[N] , cnt[N] , s[N] , a[N] , tv[N] , res = 1 , ans[N];
map <int , int> mp[N];
bool del[N];

int socap(int n)
{
    return (n * (n - 1) / 2);
}

int acs(int u)
{
    if (p[u] == u) return u;
    return p[u] = acs(p[u]);
}

void join(int u , int v)
{
    int x = acs(u);
    int y = acs(v);
    if (x != y)
    {
        if (s[x] > s[y]) swap(x , y);
        p[x] = y;
        s[y] += s[x];
        for (auto e : mp[x])
        {
            cnt[y] -= socap(mp[y][e.fi]);
            mp[y][e.fi] += e.se;
            cnt[y] += socap(mp[y][e.fi]);
        }

        res = max(res , socap(s[y]) - cnt[y] + 1);
        //cout << u << ' ' << v << ' ' << y << ' ' << cnt[y] << ' ' << s[y] << ' '<< s[x]<< '\n';
    }
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);  cout.tie(0);
    //freopen(NAME".INP" , "r" , stdin);
    //freopen(NAME".OUT" , "w" , stdout);

    int n , q;
    cin >> n >> q;
    fo(i, 1, n)
    {
        p[i] = i;
        s[i] = 1;
        cin >> a[i];
        mp[i][a[i]] = 1;
    }

    fo(i, 1, q)
    {
        cin >> tv[i];
        del[tv[i]] = true;
        p[tv[i]] = 0;
        s[tv[i]] = 0;
    }

    fo(i, 1, n - 1)
    {
        if (!del[i] && !del[i + 1])
        join(i , i + 1);
    }
    ans[q] = res;

    
    fod(i, q, 2)
    {
        int id = tv[i];
        p[id] = id;
        s[id] = 1;
        if (id - 1 >= 1 && p[id - 1] != 0)
            join(id - 1 , id);
        if (id + 1 <= n && p[id + 1] != 0)
            join(id , id + 1);

        ans[i - 1] = res;
    }
        

    fo(i, 1, q)
        cout << ans[i] << '\n';
}
// haronnee_ 