void push_down(int rt){
ll lenl=t[rt*2].r-t[rt*2].l+1;
ll lenr=t[rt*2+1].r-t[rt*2+1].l+1;
t[rt*2].v=(t[rt*2].v*t[rt].l_m%p+t[rt].l_a*lenl%p)%p;
t[rt*2+1].v=(t[rt*2+1].v*t[rt].l_m%p+t[rt].l_a*lenr%p)%p;
t[rt*2].l_m*=t[rt].l_m; t[rt*2].l_m%=p;
t[rt*2+1].l_m*=t[rt].l_m;t[rt*2+1].l_m%=p;
t[rt*2].l_a=(t[rt*2].l_a*t[rt].l_m%p+t[rt].l_a)%p;
t[rt*2+1].l_a=(t[rt*2+1].l_a*t[rt].l_m%p+t[rt].l_a)%p;
t[rt].l_m=1;
t[rt].l_a=0;
}