#include<stdio.h>
#include<string.h>
#define MAX 300

int main(){
	int i,j,n;
	int dp[MAX];
	memset(dp,0,sizeof(dp));
	dp[0]=1;
	for(i=1;i*i<MAX;i++){
		for(j=i*i;j<MAX;j++){
			dp[j] += dp[j-i*i];
		}
	}
	while(scanf("%d",&n)==1&&n){
		printf("%d\n",dp[n]);
	}
	return 0;
}