#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<utility>
#include<vector>
#include<cstring>
#include<cmath>
#define INF 0x3fffffff
#define pb push_back
#define pn(x) cerr<<x<<endl
using namespace std;
typedef long long ll;
typedef pair<int,int> P;///num,pos
const int maxv=10005;
typedef pair<int,ll> node;
const double pi=acos(-1);
double L[maxv];
double ang[maxv*4],vx[maxv*4],vy[maxv*4];
double prv[maxv*4];
int N,C;
void init(int k,int l,int r){
vx[k]=ang[k]=0;
if(r-l==1){
vy[k]=L[l];
return;
}
else{
int chl=k*2+1,chr=k*2+2;
init(chl,l,(r+l)/2);
init(chr,(r+l)/2,r);
vy[k]=vy[chl]+vy[chr];
}
}
void change(int s,double a,int v,int l,int r){
if(s<=l) return;
else if(s<r){
int chl=v*2+1,chr=v*2+2;
int m=(l+r)/2;
change(s,a,chl,l,m);
change(s,a,chr,m,r);
if(s<=m) ang[v]+=a;
double s=sin(ang[v]),c=cos(ang[v]);
vx[v]=vx[chl]+(c*vx[chr]-s*vy[chr]);
vy[v]=vy[chl]+(s*vx[chr]+c*vy[chr]);
}
}
void solve(){
init(0,0,N);
for(int i=0;i<N;i++) prv[i]=pi;
for(int i=0;i<C;i++){
double a;
int s;
scanf("%d%lf",&s,&a);
a=a/360.0*2*pi;
change(s,a-prv[s],0,0,N);
prv[s]=a;
printf("%.2f %.2f\n",vx[0],vy[0]);
}
}
int main(){
freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
printf("%.10lf\n",acos(-1));
while(cin>>N>>C){
for(int i=0;i<N;i++) scanf("%lf",&L[i]);
solve();
puts("");
}
return 0;
}