#include <iostream>
#include <cmath>
using namespace std;
inline int max(int a,int b){return a>b?a:b;}
inline int min(int a,int b){return a<b?a:b;}
inline int abs(int a){return a<0?-a:a;}
inline int read(){char c=getchar();int f=1,ans=0;
while(c<'0'||c>'9'){if(c=='-') f=-1;c=getchar();}
while(c>='0'&&c<='9')ans*=10,ans+=c-'0',c=getchar();
return ans*f;}
inline void swap(int &a,int &b){a^=b,b^=a,a^=b;}
int n,x,a,b;
double d;
const double A=400,B=600;
inline int getb(int a){
return round((d-(double)a/A)*B);
}
inline bool check(int a,int b){
return round(1000.0*((double)a/A+(double)b/B))==x&&a>=0&&a<=A&&b>=0&&b<=B;
}
int main(void){
n=read();
x=read();
cout<<A<<" "<<B<<endl;
while(--n){
x=read();
d=x/1000.0;
for(int i=0;i<=A;i++){
a=i;
b=getb(a);
if(check(a,b)){
break;
}
}
cout<<a<<" "<<b<<endl;
}
return 0;
}