#include<iostream>
#include<algorithm>
using namespace std;

#define INF 2147483647

#define MAX_N 131072
//  131072 = 2^17

int tree[ MAX_N*2 ];
int L[ MAX_N*2 ];
int R[ MAX_N*2 ];

int dfs(int a,int b,int k){  
  if(R[k]<=a || b<=L[k])return INF;
  if(a<=L[k] && R[k]<=b)return tree[k];
  return min(dfs(a,b,k*2+1),dfs(a,b,k*2+2));
}

int getMin(int a,int b){
  return dfs(a,b,0);
}

void update(int i,int x){
  int k=i;
  k+= ( MAX_N - 1 );
  tree[k]=x;
  L[k]=i;
  R[k]=i+1;
  while(k){
    k=(k-1)/2;
    tree[k]=min(tree[k*2+1],tree[k*2+2]);
    L[k]=min(L[k*2+1],L[k*2+2]);
    R[k]=max(R[k*2+1],R[k*2+2]);
  }
}


int n,q;
int a,b,c;
int main(){
  for(int i=0;i<MAX_N;i++)update(i,INF);

  cin>>n>>q;

  for(int i=0;i<q;i++){
    cin>>a>>b>>c;
    if(a==1){
      cout<<getMin(b,c+1)<<endl;
    }else{
      update(b,c);
    }
  }
  return 0;
}