/* █████╗ ██╗ ███╗ ███╗ █████╗ █████╗ ██████╗ ███╗ ███╗██╗ ██╗██████╗
██╔══██╗██║ ████╗ ████║██╔══██╗██╔══██╗██╔══██╗████╗ ████║██║ ██║██╔══██╗
███████║██║ ██╔████╔██║███████║███████║██████╔╝██╔████╔██║██║ ██║██║ ██║
██╔══██║██║ ██║╚██╔╝██║██╔══██║██╔══██║██╔══██╗██║╚██╔╝██║██║ ██║██║ ██║
██║ ██║███████╗██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██║██║ ╚═╝ ██║╚██████╔╝██████╔╝
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝
*/
#include <bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
#define ll long long
#define ull unsigned long long
#define ld long double
#define str string
#define ch char
#define db double
#define pb push_back
#define ff first
#define ss second
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define YES cout<<"YES\n";
#define NO cout<<"NO\n";
#define Bob cout<<"Bob\n";
#define Alice cout<<"Alice\n";
const ll INF = 1e9 + 7;
const ll MOD = 1e9 + 7;
void solve(){
ll n , m;
cin >> n >> m;
vector<ll>v(n + 1);
for(int i = 1;i <= n ; i ++){
cin >> v[i];
}
while(m -- ){
ll t;
cin >> t;
if(t == 1){
ll pos , val;
cin >> pos >> val;
v[pos] = val;
}
else{
ll h;
cin >> h;
ll ans = 0;
for(int i = 1; i < n ;i ++){
if(min(v[i] , v[i + 1]) <= h and max(v[i] , v[i + 1]) >= h){
ans++;
}
}
cout << ans << "\n";
}
}
}
signed main(){
ll t=1;
//cin >> t;
while(t--){
solve();
}
return 0;
}