#include <cstdio>
#include <cctype>
#include <iostream>
#include <cstring>
#include <cmath>
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <map>
#include <vector>
#define Inf 0x3f3f3f3f
#define MAXN 300010
#define MAXM 150010
#define LL long long
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
struct node
{
    int max,l,r;
    int add;
}tr[MAXN*5];
int a[MAXN],b[MAXN],ans[MAXM];
int jsq,n,m;
char st[MAXN];
void pushup(int rt)
{
    int L=rt*2,R=rt*2+1;
    tr[rt].max=max(tr[L].max,tr[R].max);
}

void pushdown(int rt)
{
    if (tr[rt].add)
    {
        int L=rt*2,R=rt*2+1;
        int x=tr[rt].add;
        tr[L].max+=x;
        tr[R].max+=x;
        tr[L].add+=x;
        tr[R].add+=x;
        tr[rt].add=0;
    }
}

void build(int l,int r,int rt)
{
    tr[rt].l=l;tr[rt].r=r;
    tr[rt].add=0;
    if (l==r)
    {
        tr[rt].max=b[l];
        return ;
    }
    int m=(l+r)/2;
    build (lson);
    build(rson);
    pushup(rt);
}

void update(int L,int R,int val,int l,int r,int rt)
{
    //printf("%d %d\n",L,R);
    if (L==l && r==R)
    {
        tr[rt].add+=val;
        tr[rt].max+=val;
        return ;
    }
    int m=(l+r)/2;
    if (R<=m)   update(L,R,val,lson);
    else if (L>m)  update(L,R,val,rson);
    else
    {
        update(L,m,val,lson);
        update(m+1,R,val,rson);
    }
    pushup(rt);
}

int find(int x,int l,int r,int rt)
{
    int L=rt*2,R=rt*2+1;
    if (l==r) return l;
    int m=(l+r)/2;
    if (tr[L].max>=x)  return find(x,lson);
    else return find(x,rson);
}
int main()
{
    int i,j;
    while (scanf("%d%d",&n,&m)!=EOF)
    {
        scanf("%s",st);
        jsq=0;
        for (i=0; i<n; i++)
        {
            if (st[i]=='(')  a[i+1]=1;
            else a[i+1]=-1;
        }
        for (i=1; i<=n; i++)  b[i]=b[i-1]+a[i];
        build(1,n,1);
        //for (i=1; i<=20; i++) printf("%d ",tr[i].max); printf("\n");
        for (i=1; i<=m; i++)
        {
            int x;
            scanf("%d",&x);
            int d=0;
            if (a[x]==1)  d=-2;
                else d=2;
            //printf("x==%d\n",x);
            update(x,n,d,1,n,1);
            a[x]=-a[x];
            int k;
            if(d==2) k=find(2,1,n,1);
            else
            {
                for (j=1; j<=n; j++)  if (a[j]<0) break;
                k=j;
            }
            printf("%d\n",k);
            update(k,n,-d,1,n,1);
            a[k]=-a[k];
            ans[++jsq]=k;
        }
    }
    return 0;
}