#include <iostream>
#include <map>
using namespace std;
struct node
{
int x,y;
node(int x1,int y1)
{
x=x1;
y=y1;
}
};
int main() {
int n,m;
cin>>n>>m;
int a[n];
int indices[n+1];
for(int i=0;i<n;i++)
{
cin>>a[i];
indices[a[i]]=i;
}
int ans=1;
for(int j=1;j<n;j++)
{
if(indices[j] > indices[j+1])
{
ans++;
}
}
//cout<<"ans="<<ans<<endl;
for(int i=0;i<m;i++)
{
int x,y;
cin>>x>>y;
x--;
y--;
map<int,map<int,int> > updatedPairs;
if(a[x]+1 <=n)
{
updatedPairs[a[x]][a[x]+1]=1;
}
if(a[x]-1 >=0)
{
updatedPairs[a[x]-1][a[x]]=1;
}
if(a[y]+1 <=n)
{
updatedPairs[a[y]][a[y]+1]=1;
}
if(a[y]-1 >=0)
{
updatedPairs[a[y]-1][a[y]]=1;
}
for(auto it=updatedPairs.begin();it!=updatedPairs.end();it++)
{
map<int,int> Map = it->second;
for(auto it2=Map.begin();it2!=Map.end();it2++)
{
ans-=(indices[it->first] > indices[it2->first]);
}
}
//cout<<"ans="<<ans<<endl;
int temp = a[x];
a[x] = a[y];
a[y] = temp;
indices[a[x]]=x;
indices[a[y]]=y;
for(auto it=updatedPairs.begin();it!=updatedPairs.end();it++)
{
map<int,int> Map = it->second;
for(auto it2=Map.begin();it2!=Map.end();it2++)
{
ans+=(indices[it->first] > indices[it2->first]);
}
}
cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUKewoJaW50IHgseTsKCW5vZGUoaW50IHgxLGludCB5MSkKCXsKCQl4PXgxOwoJCXk9eTE7Cgl9Cn07CgppbnQgbWFpbigpIHsKCglpbnQgbixtOwoJY2luPj5uPj5tOwoKCWludCBhW25dOwoJaW50IGluZGljZXNbbisxXTsKCWZvcihpbnQgaT0wO2k8bjtpKyspCgl7CgkJY2luPj5hW2ldOwoJCWluZGljZXNbYVtpXV09aTsKCX0KCQoJaW50IGFucz0xOwoJZm9yKGludCBqPTE7ajxuO2orKykKCXsKCQlpZihpbmRpY2VzW2pdID4gaW5kaWNlc1tqKzFdKQoJCXsKCQkJYW5zKys7CgkJfQoJfQoJLy9jb3V0PDwiYW5zPSI8PGFuczw8ZW5kbDsJCgkKCWZvcihpbnQgaT0wO2k8bTtpKyspCgl7CgkJaW50IHgseTsKCQljaW4+Png+Pnk7CgkJCgkJeC0tOwoJCXktLTsKCQkKCQltYXA8aW50LG1hcDxpbnQsaW50PiA+IHVwZGF0ZWRQYWlyczsKCQlpZihhW3hdKzEgPD1uKQoJCXsKCQkJdXBkYXRlZFBhaXJzW2FbeF1dW2FbeF0rMV09MTsKCQl9CgkJaWYoYVt4XS0xID49MCkKCQl7CgkJCXVwZGF0ZWRQYWlyc1thW3hdLTFdW2FbeF1dPTE7CgkJfQoJCWlmKGFbeV0rMSA8PW4pCgkJewoJCQl1cGRhdGVkUGFpcnNbYVt5XV1bYVt5XSsxXT0xOwoJCX0KCQlpZihhW3ldLTEgPj0wKQoJCXsKCQkJdXBkYXRlZFBhaXJzW2FbeV0tMV1bYVt5XV09MTsKCQl9CgkJCgkJCgkJZm9yKGF1dG8gaXQ9dXBkYXRlZFBhaXJzLmJlZ2luKCk7aXQhPXVwZGF0ZWRQYWlycy5lbmQoKTtpdCsrKQoJCXsKCQkJbWFwPGludCxpbnQ+IE1hcCA9IGl0LT5zZWNvbmQ7CgkJCWZvcihhdXRvIGl0Mj1NYXAuYmVnaW4oKTtpdDIhPU1hcC5lbmQoKTtpdDIrKykKCQkJewoJCQkJYW5zLT0oaW5kaWNlc1tpdC0+Zmlyc3RdID4gaW5kaWNlc1tpdDItPmZpcnN0XSk7CgkJCX0KCQl9CgkJCgkJLy9jb3V0PDwiYW5zPSI8PGFuczw8ZW5kbDsKCQkKCQlpbnQgdGVtcCA9IGFbeF07CgkJYVt4XSA9IGFbeV07CgkJYVt5XSA9IHRlbXA7CgkJCgkJaW5kaWNlc1thW3hdXT14OwoJCWluZGljZXNbYVt5XV09eTsKCQkKCQlmb3IoYXV0byBpdD11cGRhdGVkUGFpcnMuYmVnaW4oKTtpdCE9dXBkYXRlZFBhaXJzLmVuZCgpO2l0KyspCgkJewoJCQltYXA8aW50LGludD4gTWFwID0gaXQtPnNlY29uZDsKCQkJZm9yKGF1dG8gaXQyPU1hcC5iZWdpbigpO2l0MiE9TWFwLmVuZCgpO2l0MisrKQoJCQl7CgkJCQlhbnMrPShpbmRpY2VzW2l0LT5maXJzdF0gPiBpbmRpY2VzW2l0Mi0+Zmlyc3RdKTsKCQkJfQoJCX0KCQkKCQljb3V0PDxhbnM8PGVuZGw7Cgl9CgkKCQoKCXJldHVybiAwOwp9