#include "iostream"
#include "vector"
#include "queue"
#include "array"
#include "algorithm"

using ll = long long;

const int N = 5e5;

std::array<int, N> a;

struct SegmentTree{
    std::array<int, 2*N> t;

    void build(int v, int l, int r, int x){
        if(l + 1 == r){
            t[v] = a[l] == x;
            return;
        }
        int m = (r + l) / 2;
        build(v + 1, l, m, x);
        build(v + 2 * (m - l), m, r, x);
        t[v] = t[v + 1] + t[v + 2 * (m - l)];
    }

    void update(int v, int l, int r, int i, int x) {
        if(l + 1 == r){
            t[v] = x;
            return;
        }
        int m = (r + l) / 2;
        if(i < m){
            update(v + 1, l, m, i, x);
        }else{
            update(v + 2 * (m - l), m, r, i, x);
        }
        t[v] = t[v + 1] + t[v + 2 * (m - l)];
    }
    int get(int v, int l, int r, int qr) {
        if (qr <= l) {
            return 0;
        }
        if(r <= qr){
            return t[v];
        }
        int m = (r + l) / 2;
        return get(v + 1, l, m, qr) + get(v + 2 * (m - l), m, r, qr);
    }
};

SegmentTree t1, t2;

signed main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int n, q;
    std::cin >> n >> q;
    for(int i=0; i < n; ++i){
        std::cin >> a[i];
    }
    t1.build(1, 0, n, 1);
    t2.build(1, 0, n, 2);
    while(q--){
        int ti;
        std::cin >> ti;
        if(ti == 1){
            int x;
            std::cin >> x;
            if(a[x] == 1 && a[x - 1] == 2){
                t1.update(1, 0, n, x, 0);
                t1.update(1, 0, n, x - 1, 1);
                t2.update(1, 0, n, x, 1);
                t2.update(1, 0, n, x - 1, 0);
            }else if(a[x] == 2 && a[x - 1] == 1){
                t1.update(1, 0, n, x, 1);
                t1.update(1, 0, n, x - 1, 0);
                t2.update(1, 0, n, x, 0);
                t2.update(1, 0, n, x - 1, 1);
            }
            std::swap(a[x], a[x - 1]);
        }else{
            int y;
            std::cin >> y;
            --y;
            if(a[y] == 1){
                if(a[0] == 1){
                    std::cout << t1.get(1, 0, n, y + 1) * 2 - 1 << '\n';
                }else{
                    std::cout << t1.get(1, 0, n, y + 1) * 2 << '\n';
                }
            }else{
                if(a[0] == 2){
                    std::cout << t2.get(1, 0, n, y + 1) * 2 - 1 << '\n';
                }else{
                    std::cout << t2.get(1, 0, n, y + 1) * 2 << '\n';
                }
            }
        }
    }
    return 0;
}