#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
#define N 100010
ll k,n,q,a[N],b[N];
namespace subseg{
    ll dat[2*N];
    void init(){
	for(int i=0;i<2*N;i++)dat[i]=0;
    }
    void upd(ll i,ll x){
	i+=N; dat[i]=x;
	for(;i;i>>=1){
	    dat[i/2]=dat[i]+dat[i^1];
	}
    }
    ll qry(ll l,ll r){
	l+=N,r+=N+1;
	ll res=0;
	for(ll a=l,b=r;a<b;a>>=1,b>>=1){
	    if(a&1)res+=dat[a++];
	    if(b&1)res+=dat[--b];
	}
	return res;
    }
};

namespace Segtree{
  ll dat[2*N],laz[2*N];
  void init(){
      for(int i=0;i<2*N;i++)dat[i]=0,laz[i]=1;
      for(int i=0;i<n;i++)dat[i+N]=b[i];
      for(int i=N-1;i;i--)dat[i]=dat[i*2]+dat[i*2+1];
  }
  ll eval(ll k){
      if(k<N){
	  laz[k*2]*=laz[k];
	  laz[k*2+1]*=laz[k];
      }
      dat[k]*=laz[k]; laz[k]=1;
      return dat[k];
  }
  void upd(ll i,ll x){
      i+=N;
      for(ll d=20;~d;d--)eval(i>>d);
      if(subseg::qry(0,i-N-1)%2==0)dat[i]=x;
      else dat[i]=-x;
      for(ll a=i;a;a>>=1){
	  dat[a/2]=eval(a)+eval(a^1);
      }
  }
  void flip(ll l,ll r){
     l+=N,r+=N+1;
     for(ll a=l,b=r;a<b;a>>=1,b>>=1){
	 if(a&1)laz[a++]*=-1;
	 if(b&1)laz[--b]*=-1;
     } 
     for(ll a=l,b=r;a+b;a>>=1,b>>=1){
	 dat[a/2]=eval(a)+eval(a^1);
	 dat[b/2]=eval(b)+eval(b^1);
     }
  }
  ll sum(ll l,ll r){
      l+=N,r+=N+1;
      for(ll d=20;~d;d--){eval(l>>d); eval(r>>d);}
      ll res=0;
      for(ll a=l,b=r;a<b;a>>=1,b>>=1){
	  if(a&1)res+=eval(a++);
	  if(b&1)res+=eval(--b);
      }
      return res;
  }
};

int main(){
    cin>>k>>n>>q;
    subseg::init();
    ll zero=0;
    for(int i=0;i<n;i++){
	cin>>a[i]; a[i]*=-1;
	if(zero%2==0)b[i]=a[i]; else b[i]=a[i]*-1;
	if(a[i]==0){
	    zero++;
	    subseg::upd(i,1);
	}
    }
    Segtree::init();
    for(int u=0;u<q;u++){
	ll l,r;cin>>l>>r; l--,r--;
	if(a[l]==0&&a[r]==0){}
	else if(a[l]!=0&&a[r]!=0){
	    swap(a[l],a[r]);
	    Segtree::upd(l,a[l]);
	    Segtree::upd(r,a[r]);
	}
	else{
	    if(a[l]==0){subseg::upd(l,0);subseg::upd(r,1);}
	    if(a[r]==0){subseg::upd(r,0);subseg::upd(l,1);}
	    swap(a[l],a[r]);
	    Segtree::upd(l,a[l]);
	    Segtree::upd(r,a[r]);
	    Segtree::flip(l+1,r-1);
	}
	ll ans=1+Segtree::sum(0,n-1);
	ans%=k; if(ans<=0)ans+=k;
	if(zero%2==0)cout<<ans<<endl;
	if(zero%2==1)cout<<-ans<<endl;
    }
    return 0;
}

