//AOJ 1109

/*
方針:いいから全探索だ!
理論:min{z^3-(x^3+y^3)}(>0)を探しだそう
	y≦x<zは自明

関数説明:
	cube:3乗を返す関数。毎回書くとめんどいカッコ悪い
	cal:見たとおり。
	search:全探索するための関数
		もっとスマートな感じにしたかったけど無理だった。
		再帰関数を無理やり作っている感が非常に高い。
		これ関数2つ作ったほうが・・・(もう書き上がったあとなので修正したくない)
	main:短く

	そもそも見りゃわかるのでこんな解説イランきがしてきた

*/

#include<stdio.h>

long cube(int x){return x*x*x;}
long cal(int x,int y,int z)
	{return cube(z)-cube(x)-cube(y);}

long search(int x,int z, int c){ //1111^3を考慮し一応longで
	long re,y,i,min;
	re=min=cube(z);

	if(c){
		for(i=1;i<z;i++)if(re>search(i,z,0))
			re=search(i,z,0);
		return re;
	}

	else{
		for(i=1;i<=x;i++){
			if(cal(x,i,z)>=0&&cal(x,i,z)<min)
				min=cal(x,i,z);
		}
		return min;
	}
}

int main(){
	int n;
	while(scanf("%d",&n)){ //1<1111らしいのでintでいいよね
		if(!n)break;
		printf("%ld\n",search(1,n,1));
	}
	return 0;
}

/*
　　/　　 /　　/　 /
　　＿n＿
　／//|ヾ＼　/　/
　⌒⌒|⌒⌒
/　　 |∧_∧　/　 /
　　　|・ω・`)
　/　 Oと　 )　/　/
　　　 しーＪ。。。。。
*/