#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()
{
}