#2 #6 WA,求助
#include <bits/stdc++.h>
#define ll long long
#define lb(x) x&(-x)
using namespace std;
const ll N=2e5,INF=1e10;
struct node{
ll x,y,dis;
}a[N+5];
ll n,q;
ll tr[4*N+5],trr[N+5];
void add(ll x,ll y){
for(ll i=x;i<=n;i+=lb(i)) trr[i]+=y;
return;
}
ll get_sum(ll x){
ll s=0;
for(ll i=x;i;i-=lb(i)) s+=trr[i];
return s;
}
void update(ll p){
tr[p]=max(tr[2*p],tr[2*p+1]);
return;
}
void change(ll p,ll l,ll r,ll x,ll y){
if(l==r){
tr[p]=y;
return;
}
ll mid=(l+r)>>1;
if(x<=mid) change(2*p,l,mid,x,y);
else change(2*p+1,mid+1,r,x,y);
update(p);
return;
}
ll searchh(ll p,ll l,ll r,ll x,ll y){
if(x>y) return -INF;
if(l==x && r==y) return tr[p];
ll s=-INF;
ll mid=(l+r)>>1;
if(y<=mid) s=max(s,searchh(2*p,l,mid,x,y));
else if(x>=mid+1) s=max(s,searchh(2*p+1,mid+1,r,x,y));
else{
s=max(s,searchh(2*p,l,mid,x,mid));
s=max(s,searchh(2*p+1,mid+1,r,mid+1,y));
}
return s;
}
ll get_dis(ll x,ll y,ll xx,ll yy){
return abs(x-xx)+abs(y-yy);
}
void gx(ll z){
if(z==1 || z==n) return;
ll dis_ab=get_dis(a[z-1].x,a[z-1].y,a[z].x,a[z].y);
ll dis_bc=get_dis(a[z].x,a[z].y,a[z+1].x,a[z+1].y);
ll dis_ac=get_dis(a[z-1].x,a[z-1].y,a[z+1].x,a[z+1].y);
a[z].dis=dis_ab+dis_bc-dis_ac;
change(1,1,n,z,a[z].dis);
return;
}
int main(){
// freopen("P3113_2.in","r",stdin);
// freopen("test.out","w",stdout);
scanf("%lld%lld",&n,&q);
for(ll i=1;i<=4*n;i++) tr[i]=-INF;
for(ll i=1;i<=n;i++){
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].dis=-INF;
if(i>=2) add(i,get_dis(a[i-1].x,a[i-1].y,a[i].x,a[i].y));
}
for(ll i=2;i<n;i++){
ll dis_ab=get_dis(a[i-1].x,a[i-1].y,a[i].x,a[i].y);
ll dis_bc=get_dis(a[i].x,a[i].y,a[i+1].x,a[i+1].y);
ll dis_ac=get_dis(a[i-1].x,a[i-1].y,a[i+1].x,a[i+1].y);
a[i].dis=dis_ab+dis_bc-dis_ac;
change(1,1,n,i,a[i].dis);
}
while(q--){
char op;
cin>>op;
if(op=='Q'){
ll x,y;
scanf("%lld%lld",&x,&y);
printf("%lld\n",get_sum(y)-get_sum(x)-searchh(1,1,n,x+1,y-1));
}
else if(op=='U'){
ll x,y,z;
scanf("%lld%lld%lld",&z,&x,&y);
if(z>=2){
add(z,get_dis(a[z-1].x,a[z-1].y,x,y)-get_dis(a[z-1].x,a[z-1].y,a[z].x,a[z].y));
if(z<n) add(z+1,get_dis(a[z+1].x,a[z+1].y,x,y)-get_dis(a[z+1].x,a[z+1].y,a[z].x,a[z].y));
}
a[z].x=x,a[z].y=y;
gx(z),gx(z-1),gx(z+1);
}
}
return 0;
}