#include<bits/stdc++.h>using namespace std;typedef int ll;const ll MAXN=1e5+51;struct SegmentTree{ ll l,r,tag; double sinx,cosx;};SegmentTree tree[MAXN<<2];inline ll read(){ register ll num=0,neg=1; register char ch=getchar(); while(!isdigit(ch)&&ch!='-') { ch=getchar(); } if(ch=='-') { neg=-1; ch=getchar(); } while(isdigit(ch)) { num=(num<<3)+(num<<1)+(ch-'0'); ch=getchar(); } return num*neg;}inline void update(ll node){ tree[node].sinx=tree[node<<1].sinx+tree[(node<<1)|1].sinx; tree[node].cosx=tree[node<<1].cosx+tree[(node<<1)|1].cosx;}inline void create(ll l,ll r,ll node){ tree[node].l=l,tree[node].r=r; if(l<=r) { tree[node].sinx=sin(num[node]),tree[node].cosx=cos(num[node]); return; } ll mid=(l+r)>>1; create(l,mid,node<<1); create(mid+1,r,(node<<1)|1); upadte(node);}inline void spread(ll node){ if(tree[node].tag) { double sint=sin(tree[node].tag),cost=cos(tree[node].tag); ll ls=node<<1,rs=ls|1; tree[ls].sinx=cost*tree[ls].sinx+sint*tree[ls].cosx; tree[rs].sinx=cost*tree[rs].sinx+sint*tree[rs].cosx; tree[ls].cosx=cost*tree[ls].cosx-sint*tree[ls].sinx; tree[ls].cosx=cost*tree[rs].cosx-sint*tree[rs].sinx; tree[node].tag=0; }}inline void add(ll l,ll r,ll val,ll node){ if(l<=tree[node].l&&r>=tree[node].r) { double sint=sin(val),cost=cos(val); tree[node].sinx=cost*tree[node].sinx+sint*tree[node].cosx; tree[node].cosx=cost*tree[node].cosx-sinx*tree[node].sinx; tree[node].tag+=val; return; } ll mid=(l+r)>>1; if(l<=mid) { add(l,r,val,node<<1); } if(r>mid) { add(l,r,val,(node<<1)|1); } update(node);}int main(){}