#include <iostream>
#include <vector>
using namespace std;
int countSplits(const vector<int>& P, int N) {
int splits = 1; // Почетно имамо бар један сегмент
for (int i = 1; i < N; i++) {
if (P[i] < P[i - 1]) {
splits++;
}
}
return splits - 1; // Укупна цена сортирања
}
int main() {
int N, Q;
cin >> N >> Q;
vector<int> P(N);
for (int i = 0; i < N; i++) {
cin >> P[i];
}
// Прво израчунамо почетну цену
cout << countSplits(P, N) << endl;
// Обрадимо Q упита
for (int q = 0; q < Q; q++) {
int i, j;
cin >> i >> j;
swap(P[i - 1], P[j - 1]); // Индекси су 1-базирани у улазу, па их конвертујемо
// Исписујемо ажурирану цену после сваке промене
cout << countSplits(P, N) << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBjb3VudFNwbGl0cyhjb25zdCB2ZWN0b3I8aW50PiYgUCwgaW50IE4pIHsKICAgIGludCBzcGxpdHMgPSAxOyAvLyDQn9C+0YfQtdGC0L3QviDQuNC80LDQvNC+INCx0LDRgCDRmNC10LTQsNC9INGB0LXQs9C80LXQvdGCCiAgICBmb3IgKGludCBpID0gMTsgaSA8IE47IGkrKykgewogICAgICAgIGlmIChQW2ldIDwgUFtpIC0gMV0pIHsKICAgICAgICAgICAgc3BsaXRzKys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHNwbGl0cyAtIDE7IC8vINCj0LrRg9C/0L3QsCDRhtC10L3QsCDRgdC+0YDRgtC40YDQsNGa0LAKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgTiwgUTsKICAgIGNpbiA+PiBOID4+IFE7CiAgICB2ZWN0b3I8aW50PiBQKE4pOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgY2luID4+IFBbaV07CiAgICB9CgogICAgLy8g0J/RgNCy0L4g0LjQt9GA0LDRh9GD0L3QsNC80L4g0L/QvtGH0LXRgtC90YMg0YbQtdC90YMKICAgIGNvdXQgPDwgY291bnRTcGxpdHMoUCwgTikgPDwgZW5kbDsKCiAgICAvLyDQntCx0YDQsNC00LjQvNC+IFEg0YPQv9C40YLQsAogICAgZm9yIChpbnQgcSA9IDA7IHEgPCBROyBxKyspIHsKICAgICAgICBpbnQgaSwgajsKICAgICAgICBjaW4gPj4gaSA+PiBqOwogICAgICAgIHN3YXAoUFtpIC0gMV0sIFBbaiAtIDFdKTsgLy8g0JjQvdC00LXQutGB0Lgg0YHRgyAxLdCx0LDQt9C40YDQsNC90Lgg0YMg0YPQu9Cw0LfRgywg0L/QsCDQuNGFINC60L7QvdCy0LXRgNGC0YPRmNC10LzQvgoKICAgICAgICAvLyDQmNGB0L/QuNGB0YPRmNC10LzQviDQsNC20YPRgNC40YDQsNC90YMg0YbQtdC90YMg0L/QvtGB0LvQtSDRgdCy0LDQutC1INC/0YDQvtC80LXQvdC1CiAgICAgICAgY291dCA8PCBjb3VudFNwbGl0cyhQLCBOKSA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9