#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define MAX_ROW 160
#define MAX_COL 160

int main(void){
	int inputR,inputC;           //??\?????°??? R-??????,col-?¨????
	int inputDiag;               //??\??????????§????
	int i,j;                     //???????????¨?????°
	int ansR,ansC;               //??????
	int ansDiag;                 //?????????????§????
	int tempDiag;                //??????????????????????§?????????????
	int diag[MAX_ROW][MAX_COL]={};
	//diag[i][j]???????¨?i,??????j???????????¢???????§??????????????????????
	
	//??????????¨????(?¨????????????¢????????????)
	for(i=1;i<MAX_ROW;i++){
		for(j=i+1;j<MAX_COL;j++){
			if(i!=0 && j!=0) diag[i][j]=i*i+j*j;
		}
	}
	
	//ctrl+d??????????????§?????????
	while(scanf("%d %d",&inputR,&inputC)!=EOF){
		if(inputR+inputC==0)break;    //????????????
		ansR=160;//??????????????§?????§???????????????????????????????????£??\
		
		//??¢?´¢??????????§????????????????????????§????????????input????????§??????????°??????¢???
		inputDiag=inputR*inputR+inputC*inputC; //??\????????????????????¢???????§??????????????????????
		for(i=1;i<MAX_ROW;i++){
			for(j=i+1;j<MAX_COL;j++){
				if(diag[i][j]==inputDiag){     //????§????????????????????????¨???
					if(inputR<i && i<ansR){    //?????????input????????§??????????°???????
						ansR=i;                //???????????????
						ansC=j;                //???????????????
					}
				}
			}
		}
		
		//????§????????????????????????????????????????
		if(ansR==160){
			//??¢?´¢??? ????§????????????????input????????§??????????°??????¢???
			ansDiag=160*160*2;
			for(i=1;i<MAX_ROW;i++){
				for(j=i+1;j<MAX_COL;j++){
					tempDiag=i*i+j*j;
					//??\???????????§??????????????????????????????
					if(inputDiag<tempDiag && tempDiag<ansDiag){
						ansDiag=tempDiag;
						ansR=i;
						ansC=j;
					}
					//?????????????????¨???
					else if(tempDiag==ansDiag){
						if(i<ansR){
							ansR=i;
							ansC=j;
						}
					}
				}
			}
		}
		printf("%d %d\n",ansR,ansC);
	}
	return 0;
}