/*有是一道水题,不过还是没写好.主要是题意又看错了.不需要进行排序.直接按位置选每一行的最值.
一个i--省去了很多功夫额.*/
#include <stdio.h>
struct st
{
int w,h;
}a[100];
int main()
{
int n,w,h;
while(scanf("%d",&n)==1&&n)
{
int t=0;
while(scanf("%d%d",&w,&h)==2)
{
if(w==-1&&h==-1) break;
a[t].w=w;
a[t].h=h;
t++;
}
int ww=0,hh=0,hmax=0,wmax=0;
for(int i=0;i<t;i++)
{
if(ww+a[i].w<=n)
{
ww+=a[i].w;
if(ww>wmax) wmax=ww;
if(a[i].h>hmax) hmax=a[i].h;
}
else
{
i--;
ww=0;
hh+=hmax;
hmax=0;
}
}
printf("%d x %d\n",wmax,hh+hmax);
}
return 0;
}