/*DEP TRAI CO J SAI*/
/* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%##***************************+++++++++++++++++++++++++++++++++++++++++++++++***************************######%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%####**************************++++++++++++++++++++++++++++++++++++++++++++++++***************************#######%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%##**************************++++++++++++++++++++++++++++++++++++++++++++++++++****************************########%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%##***************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#########%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%##*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************##########%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%##*************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++**+*********************#############%%@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%##*************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************########*######%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%####********************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************######**#######%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%##**************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++************************#####***#######%%@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%##***********************+*****+++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************######***######%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%##******************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************####****#####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%####*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++***********************###****########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%%####***************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++**********************#****#########%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%###*****************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************########%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%%###******** ************************+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*********************###**########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%#####****************############*********++++++++++++++++++++++++++++++++++++++++++++++++++************###***#####################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%#####************##%%%%%%%%%%%%%%%%%%%%%##***+++++++++++++++++++++++++++++++++++++++++++***####%%%%%%%@%%%%%%%%%%%%%################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%######*******##%%%@@@@@@@@@@%%%%%%%%%@%%%%%%%##****++++++++++++++++++++++++++++++++++**###%%%%%%%%%%@@@@@@@@@@@@@@@@@%%##***#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%######*****#%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%####***++++++++++++++++++++++++++***###%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@%%%###########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%#####****##%%%###%%%###**######%%%%%%%%%%%%%%%%%%%%%###***+++++++++++++++++++++******##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@%%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@%%#####***#######**********+**********####################***+++++++++++++++++++******#######%%%%%%%%%#######*******####%%%%@%#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%####*****************+++++++++++++++++************#*###****+++++++++++++++++++*****#######************+++++************##%%%%########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%###***#*******++**+++++++++++++++++++++++*****************+++++++++++++++++++*****##**************+++++++++++++++*******###%%#######%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%###****************+++++++++++++++++++++++++*************++++++++++++++++++++*****#**********+++++++++++++++++++++********#########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%##*****************++*+++*******************************+++++++++++++++++++*******##******+++++++++++++++++++++************########%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@%%##*******************************######**#####**********+++++++++++++++++*****#####*******+++++++++*+***++++****************###**##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%##***************##**####%%%%@@%%%%%%%%%%%##************++++++++++++++++******##************++++++++*****************************##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@%%##%%@@@%%#***************#####%%@@%##%%##*#%%####**##%##*************+++++++++*******#####*********######%%%%%%#############*#**********####%###%%%%%%%%%%%%%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@###***##%@%##************###%%@@@@@%%#**####%%%%##***++**#####*+***********+++++********###****#######****#***#%%%%%%%%%%%%######***********#########%%%%%%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@###******#%##**************##%%%%########********************+++**********++++++*******###*****####****++**###%%%######%%@@%%%%#####**********###***#%%%%%%%@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@%#*##******##***********+++*******************++********++++++++**********++++++********####*******************##########%%%@@@@%%####*********##%####%%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@%#*##******###******++++++++**********++**+*************++++++************++++++********####**********++**+++********#######%%%%%%###**********########%@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@#**##*****###*******+++++++++++++++++****************++++++++*************++++**********######*****************************#######**************##**####%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@%*********####********++++++++++++++++++++++++++++++++++++++++**************++**+*********####********++++******************************************#####%@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@%********#####********+++++++++++++++++++++++++++++++++++++++++*************++++++*********####*******++++++++++++++++++++***********************#########%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@%*******######*******++++++++++++++++++++++++++++++++++++++++************+++++++++++********###*******++++++++++++++++++++++++++++*************#####*#####%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##########%%%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@#**+++**#%###********+++++++++++++++++++++++++++++++++++++++***********++++++++++++++++*******#*******+++++++++++++++++++++++++++++++**********#####**####%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%######%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@@#*++++**#####*******+++++++++++++++++++++++++++++++++++++++**********++++++++++++++++++++******##*****++++++++++++++++++++++++++++++++*********##*###**###%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%#################%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@%#*++***######*******++++++++++++++++++++++++++++++++++++++********++++++++++++++++++++++++***********+++++++++++++++++++++++++++++++++++*******##*###****#%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#####################%%%%%%%%*
@@@@@@@@@@@@@@@@@@@@%*++****#####********+++++++++++++++++==+++++++++++++++++++****++++++++++++++++++++++++++++************++++++++++++++++++++++++++++++++++*******#**###****#%@@@@@@@@@@%%%%%%%%%%%%%%%%%%%#################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@%**+****#%%###*******++++++++++++++++++++++++++++++++++++++**+++++++++++++++++++++++++++++**************+++++++++++++++++++++++++++++++++**********##*****#%@@@@@@@@@@%%%%%%%%%%%%########################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@%#*****##%%###*******+++++++++++++++++++++++++++++++++++++***++++++*********++++++++++++****************+++++++++++++++++++++++++++++++++***********#*****#%@@@@@@@@@@%%%%%%%%############################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@%#*****##%%###*******+++++++++++++++++++++++++++++++++++++**++***#%%@@@@@@@%#*++++++++**##%@@%%##********++++++++++++++++++++++++++++++++***********##****#%@@@@@@@@@@%%%%%%%#############################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@@#******#%%####*******++++++++++++++++++++++++++++++++++++******###%%@@@@@%##***++++***#@@@@@@%%###*******+++++++++++++++++++++++++++++++******#****###**#%%@@@@@@@@@@%%%%%%%#############################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@@%******#%%####*******++++++++++++++++++++++++++++++++++++*************#**************##%%%%%%##**********+++++++++++++++++++++++++++++************####**#%@@@@@@@@@@@%%%%%%%#############################################%%%%%%*
@@@@@@@@@@@@@@@@@@@@@@#*****#%%%###*********++++++++++++++++++++++++++++++++++******+++++++++++*********###********+++***#*****+++++++++++++++++++++++++++*************#%#####%@@@@@@@@@@@%%%%%%%##############################################%%%%%*
@@@@@@@@@@@@@@@@@@@@@@%#****#%%%%##**********++++++++++++++++++++++++++++++++++********+++++++*************************####****++++++++++++++++++++++++****************#%#**#%%@@@@@@@@@@@%%%%%%###############################################%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@%%%%##%%%%###*********+++++++++++++++++++++++++++++++++++++******+++++++++++***************#######*******++++++++++++++++++++++*****************%%###%%@@@@@@@@@@@@%%%%%%%##############################################%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%####************++++++++++++++++++++++++++++++++++++++++*++++++++++++++++*********************++++++++++++++++**********************#%%%%%%@@@@@@@@@@@@%%%%%%%%##############################################%%%%%*
@@@@@@@@@@@@@@@@@@@@@@@%##*#%%%%%%######***********++++++++++++++++++++++++++++++++++*+****#*****+++++++***#####********************++++++++++++******************##*#%%%%%%%%@@@@@@@@@@@%%%%%%%%###############################################%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@%%###%@%%%%######*************+++++++++++++++++++++++++++*****####%%%%%%##**+**###%%%%%%%##*********************+++++*******************######%%%####%@@@@@@@@@@@%%%%%%%################################################%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#######**********+++++++++++++++++++++++++****###%#%%%%%%%%%%#****##%%%%%%%%%%%%##****************************************########%%%###%%%@@@@@@@@@@%%%%%%%#################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%######*********++++++++++++++++**********####%#%%%%%%%%%%%%%####%%###%%%%%@@@@%%###**********************************##########%%%####%%%%%@@@@@@@%%%%%%%%#################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#######************++****+******########%%%%###***********#######*****####%%%%%%%%%######**************************######%%%%##%#####%%%%%@@@@@@%%%%%%%%%################################################%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%#####**********************####%%%%%#####**********++++++******************###%%%%%%%#####*******************########%%%%%%#%%######%%%%%%%%%%%%%%%%%%#################################################%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%#%#####******************######%%###*******************************************##%#%%%%%%####***************#########%%%%%%%%#######%%%%%%%%%%%%%%%%%%##################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#%%%%%%%#####***************##########****************************************######*#####%%%%%%%#######*******########%%%%%%##%#%########%%%%%%%%%%%%%%%%%##################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%###%%%%%#####**************#########********################################################%%%%%%%#####*****######%%%%%%%%%##%%%%########%%%%%%%%%%%%%%%%%#################################################%%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%%%%%%######************#####****#########################################################%%%%%%%##############%%%%%%%%%#%%%%%#########%%%%%%%%%%%%%%%%###################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#####***********####***###############*####****####**###############################%%%%%############%%%%%%%%%%%%%%%%##########%%%%%%%%%%%%%%%%####################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%###**********##***#####%%#####**********************************#####%%%%%#########%%%###########%%%%%%%%##%%%%%%%##########%%%%%%%%%%%%%%%%###################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%###**************########*************+++++++++++++++*************#############*###############%%%%%%%%##%%%%%%%%##########%%%%%%%%%%%%%%%####################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%###****************######********++++++++++++++++++++++++++*******###########******#########%%%%%%%%%%%#%%%%%%%%############%%%%%%%%%%%%%%####################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%####***************************+++++++++++++++++++++++++++++*********#######******##########%%%%%%%%%%%%%%%%%%%##############%%%%%%%%%%%%%####################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%###******************************++++++++++++++++++++++++++*********########****###########%%%%%%%%%%%%%%%%%%%##############%%%%%%###########################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@%%%###*****************##*****************+*****************************#######***###########%%%%%%%@%%%%%%%%%%################%%%%%############################################################%%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@%%@@@@@@%%%#####**************######***************************************#########*****###########%%%%%@@@@%%%%%%%%######****#######%%%%%%%###########################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@%%%######******************###########%#%%%%%%%%%%%%%%%%%%%%%%%##########*******###########%%%@@@@@@@@@%%%%%#####***#**#######%%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@%%%#####*********************######%#####%%%%%%%%%%%%%%%%#%%%%####***********#############%%%@@@@@@@@@@@%%####*******#########%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####%%@@@@@@@@%%%######*************************############%%%%%%%%%%#####***************############%%%%@@@@@@@@@@%%###*#*******#########%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#####%%%%@@@@@@@%%#####**********************++++************####*#######***************#############%%%%@@@@@@@@@%%%%#***********#########%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#######%@@@@@@@%%%%####****************+++++++++++++++++++++*+++*+*******************##############%%%%@@@@@@@@%%%%%##************#######%%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######%%%%@@@@%%%%%###***************+++++++++++++++++++++++++++++++++++************##############%%%%@@@@@@@%%%%###*************#######%%%%%%############################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##****###%%%@@@@@%%%%%##*************+++++++++++++++++++++++++++++++++++++****************#######%%%%@@@@@@@@%%######*************#######%%%%%%%%##########################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##******###%%%@@@@@@%%%##************+++++++++++++++++++++++++++++++++++++***************######%%%%%@@@@@@@%%%#######*************#######%%%%%%%%%%########################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*********##%%%%@@@%%%%##******++++++++++++***+++++*++++++++++++**++********************####%%%%@@@@@@@@@%%%#######**************#######%%%%%%%%%%#########################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##***********###%%%@@@@%%%##****++++********************++++++++************************##%%%%%%@@@@@@%%%%#####*#####**************######%%%%%%%%%%%########################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###************###%%@@@@%%%##******+*******#****###******************##########*****#####%%%%%%@@@@@%%%%####*#***###**************#######%%%%%%%%%%%%######################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**************##%%%@@@@%%####******##############****#****#########%%%%%%%#######%%%%%%%%@@@@%%%%######********##**************#######%%%%%%%%%%%%%#####################################################%%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##****************##%%%@@@@%%######*#########################%%#%%%%%%%%%%%%%%%%%%%%%%%%@@@@@%%%%%####***********##**************######%%%%%%%%%%%%%#######################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*****************###%%%%@@@%%%%%%%%%%%%%%%%%%%%%%%%%#%####%%%%%%%%%%%%%@@%%%%%%%%@@@@@@@@%%%%%####*************##**************#######%%%%%%%%%%%%#######################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##*************++*****##%%%@@@@@@@%%@%%%%%%@%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%%%%@@@@@@@@%%%%%####***************##****************#####%%%%%%%%%%%%#######################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##**********+++++*******###%%@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%####***************#*#*****************#####%%%%%%%%%%%%%######################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##********+++++++++++******#%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%####********************##****************#####%%%%%%%%%%%%%######################################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%#******++++++++++++++++++******####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###*********************************************#####%%%%%###############****#########################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++============================================================================================================================================================================++*#################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+==================================================================================================================================================================================+################################%*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+===================================================================================================================================================================================+*################################*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+====================================================================================================================================================================================*################################*
@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*==============================================*%@@@%*=============================================================+#%%#+========+*##*+==+##*=========================================*################################*
@@@@@@@@@@@@@@@@@@@@@%%%#####+==========+%@@@@@@@@@@@@@@@%#*+==============*@@@@#+===+****+====================================================*%@@@@%*======*%@@@@@%#%@@#+==+****+================================*################################*
@@@@@@@@@@@@@@@@%%%#####*****+==========+%@@@@@@@@@@@@@@@@@@@#+===========*@@@%*=====#@@@@*===+*%@@@@#+========================================+#@@@@#+=====+#@@#*#%@@@@%+==+#@@@%*================================+################################*
@@@@@@@@@@@%%%#####**********+==========+%@@@@@#*++++**#@@@@@@%+=========+****+====+#@@@@#+====#@@@@@#+==========================================++++=======+***+==++***==+*#@@@@#+================================+################################*
@@@@@%%%%#####***************+==========+%@@@@@*========*@@@@@@+========++**##%%%%@@@@@@#+==+**%@@@@@%****===============++*####*++==+*****+===+******+========+**###%%%%@@@@@@%*+=+******==+**####*++=============+################################*
%%%######********************+==========+%@@@@@*========*@@@@@%+======*#@@@@@@@@@@@@@%*=====#@@@@@@@@@@@@%+============+#@@@@@@@@@@#*%@@@@@*===+@@@@@%+=====+#%@@@@@@@@@@@@@#++====*@@@@@%*%@@@@@@@@@%*+===========*###############################%*
#####*****************+++++**+==========+%@@@@@#++++++*#@@@@@#+=====+#@@@@@@@%%%@@@@@@%*+===*%%@@@@@@@%%%#+===========*@@@@@@@@@%@@@@@@@@@@*===+@@@@@%+===+#@@@@@@@%%%@@@@@@@#+====*@@@@@@@@@@@@@@@@@@@#+==========*###############################%*
**************++++++++++++***+==========+%@@@@@@@@@@@@@@@@%*+======+%@@@@@#+====+*%@@@@@*+====+#@@@@@%+==============*%@@@@@#*====+*%@@@@@@*===+@@@@@%+===#@@@@@%*+====+%@@@@@%+===*@@@@@@%+====+#@@@@@%*==========*################################*
************+++++++++++++++**+==========+%@@@@@@@@@@@@@@@@@@@#*====*@@@@@%+=======*@@@@@%+=====#@@@@@%+=============+#@@@@@#+=======*@@@@@@*===+%@@@@%+==*@@@@@%*=======+%@@@@@*===*@@@@@%+======+%@@@@@*==========*###############################%*
******++++++++++++++++++++++++==========+%@@@@@*+======+*%@@@@@%+=+#@@@@@#========+%@@@@@*=====#@@@@@%+=============+%@@@@@*========+%@@@@@*===+%@@@@%+==*@@@@@%+========#@@@@@#===*@@@@@%+======+%@@@@@*==========+##############################%%*
***+++++++++++++++++++++++++++==========+%@@@@@*=========+%@@@@@#=+#@@@@@#+=======+%@@@@@*=====#@@@@@%+=============+#@@@@@#========+%@@@@@*===+%@@@@%+==*@@@@@%+=======+%@@@@@*===*@@@@@%+======+%@@@@@*==========+*******#######################%%*
+***++++++++++++++++++++++++++==========+%@@@@@*=========*%@@@@@#==*@@@@@%*======+#@@@@@%+=====#@@@@@#+==============*@@@@@@*======+#@@@@@@*===+%@@@@%+==+%@@@@@*=======*@@@@@@*===*@@@@@%+======+%@@@@@*==========+***********#####################*
+++++++++++++++++++++++++++*++==========+%@@@@@#+++++++*#@@@@@@%*===#@@@@@@#++++*%@@@@@%*======*@@@@@%*+=============+#@@@@@@%#***#@@@@@@@@*===+%@@@@%+===*%@@@@@#*+++*#@@@@@@*====*@@@@@%+======+%@@@@@*==========+***************#################*
**+*+++++++++++++++++++++++**+==========+%@@@@@@@@@@@@@@@@@@@@#+=====*%@@@@@@@@@@@@@@@#+=======+%@@@@@@@@%+===========+*%@@@@@@@@@@%#%@@@@@*===+%@@@@%+====*%@@@@@@@@@@@@@@@%*=====*@@@@@%+======+%@@@@@*==========+**********######################*
*****++++++++++++++++++++++**+==========+%@@@@@@@@@@@@@@@@%#*+=========+#%@@@@@@@@%%*+==========+#%@@@@@@%+==============+*#%%%%#*+++%@@@@@*===+%@@@@%+======+#%@@@@@@@@@%#++======*@@@@@#+======+%@@@@%*==========+*###############################*
##*************++++++++******+=============================================+++++++==================++++++===========+******+=======*@@@@@%+=====================+++++++===========================================*#######*******##################*
#########********************+=======================================================================================+#@@@@@@%#**##%@@@@@%*========================================================================+##**************################*
#################************+=========================================================================================+#@@@@@@@@@@@@@@%*+=========================================================================+*****************###############*
*****########################*============================================================================================+**#######*++============================================================================+*****************##*############+
*********####################*=====================================================================================================================================================================================+********************************+
***************###############+===================================================================================================================================================================================+*********************************+
*********************##########++================================================================================================================================================================================+**********************************+
***#*************************###***++++++++++++++++++++++++++++++++==+++++++=++++++====+++====+==========++++++=+++++++++++++++++++++=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*************************************+ */
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")
#define fi first
#define se second
#define pu emplace_back
#define ll long long
typedef pair <ll,ll> ii;
const int N=2e6;
long long mod=1e9+7;
int n,m,x,y;
int b[N+1],tt[24][N+10];
ii f[N+12];
struct fir{
int l,r;
};
fir a[N+10];
bool o[N+10];
vector <int> open[N+10],cl[N+10];
ii node[N*4+10];
ii ss(ii a,ii b){
if(a.fi>b.fi) return a;
return b;
}
void Build(int id,int l,int r){
if(l==r){
node[id]=f[l];
return;
}
int mid=(l+r)/2;
Build(id*2,l,mid);
Build(id*2+1,mid+1,r);
node[id]=ss(node[id*2],node[id*2+1]);
}
ii Find(int id,int l,int r,int u,int v){
if(l>v or r<u) return {0,0};
if(l>=u and r<=v) return node[id];
int mid=(l+r)/2;
ii tg1=Find(id*2,l,mid,u,v);
ii tg2=Find(id*2+1,mid+1,r,u,v);
return ss(tg1,tg2);
}
void tinh(){
cin>>n>>m;
int cnt=2;
b[1]=0,b[2]=m-1;
for(int i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
cnt++;
b[cnt]=a[i].l;
b[++cnt]=a[i].r;
cnt++;
b[cnt]=a[i].l-1;
cnt++;
b[cnt]=a[i].r+1;
}
sort(b+1,b+1+cnt);
int cc=1;
for(int i=2;i<=cnt;i++){
if(b[i]!=b[i-1]){
cc++;
b[cc]=b[i];
}
}
cnt=cc;
m=cnt;
for(int i=1;i<=n;i++){
a[i].l=lower_bound(b+1,b+1+cnt,a[i].l)-b;
a[i].r=lower_bound(b+1,b+1+cnt,a[i].r)-b;
if(a[i].r<a[i].l) a[i].r+=m;
open[a[i].l].pu(i);
cl[a[i].r].pu(i);
}
priority_queue <ii> pq;
for(int i=1;i<=m*2;i++){
for(int x:open[i]){
o[x]=true;
pq.push({a[x].r,x});
}
ii z={0,0};
while(pq.size()){
int w=pq.top().fi,u=pq.top().se;
pq.pop();
if(!o[u]) continue;
z={w,u};
}
f[i]=z;
for(int x:cl[i]){
o[x]=false;
}
}
Build(1,1,m*2);
for(int i=1;i<=n;i++){
ii z=Find(1,1,m*2,a[i].l,a[i].r+1);
if(z.fi==a[i].r) z.se=0;
tt[0][i]=z.se;
}
for(int i=1;i<=22;i++){
for(int j=1;j<=m;j++) tt[i][j]=tt[i-1][tt[i-1][j]];
}
int ans=mod;
for(int i=1;i<=n;i++){
int res=1,l=i;
for(int j=22;j>=0;--j){
if(!tt[j][l]) continue ;
int k=tt[j][l];
if(a[k].r<a[i].l+m-1) {
l=k;
res+=(1<<j);
}
}
int k=tt[0][l];
if(a[k].r>=a[i].l+m-1){
res++;
ans=min(ans,res);
}
}
if(ans==mod) ans=-1;
cout<<ans;
}
int main(){
ios_base::sync_with_stdio(false);
//freopen("jday.inp","r",stdin);
//freopen("jday.out","w",stdout);
cin.tie(0);
cout.tie(0);
tinh();
return 0;
}
//code của anh Nam đẹp trai nhất CHL
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |