splay
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
struct point
{
int key;
point *lch,*rch,*fa;
};
void leftrotate(point *x)
{
point *y=x->fa;
y->rch=x->lch;
if(x->lch!=NULL) x->lch->fa=y;
x->fa=y->fa;
if(y->fa!=NULL) {
if(y->fa->lch==y) y->fa->lch=x;
else y->fa->rch=x;
}
y->fa=x;
x->lch=y;
}
void rightrotate(point *x)
{
point *y=x->fa;
y->lch=x->rch;
if(x->rch!=NULL) x->rch->fa=y;
x->fa=y->fa;
if(y->fa!=NULL) {
if(y->fa->lch==y) y->fa->lch=x;
else y