Problem:
Fermat's Last Theorem

In the 17th century, Fermat wrote that he proved for any integer $n \geq 3$,
there exist no positive integers $x$, $y$, $z$ such that
$x^n + y^n = z^n$.
However he never disclosed the proof. Later, this claim was named
Fermat's Last Theorem or Fermat's Conjecture.

If Fermat's Last Theorem holds in case of $n$, then it also holds
in case of any multiple of $n$.
Thus it suffices to prove cases where $n$ is a prime number
and the special case $n$ = 4.

A proof for the case $n$ = 4 was found in Fermat's own memorandum.
The case $n$ = 3 was proved by Euler in the 18th century.
After that, many mathematicians attacked Fermat's Last Theorem.
Some of them proved some part of the theorem, which was a
partial success.
Many others obtained nothing.
It was a long history.
Finally, Wiles proved Fermat's Last Theorem in 1994.

Fermat's Last Theorem implies that for any integers $n \geq 3$
and $z > 1$, it always holds that

$z^n > $ max { $x^n + y^n | x > 0, y > 0, x^n + y^n \leq z^n$ }.

Your mission is to write a program that verifies this in the case
$n$ = 3 for a given $z$. Your program should read in
integer numbers greater than 1, and, corresponding to each input
$z$, it should output the following:

$z^3 - $ max { $x^3 + y^3 | x > 0, y > 0, x^3 + y^3 \leq z^3$ }.

Input

The input is a sequence of lines each containing one positive integer
number followed by a line containing a zero. You may assume that all of
the input integers are greater than 1 and less than 1111.

Output

The output should consist of lines each containing a single
integer number. Each output integer should be

$z^3 - $ max { $x^3 + y^3 | x > 0, y > 0, x^3 + y^3 \leq z^3$ }.

for the corresponding input integer z.
No other characters should appear in any output line.

Sample Input

6
4
2
0

Output for the Sample Input

27
10
6

Solution in C# (judge verdict: Accepted)

using static System.Math;
using System;


public class hello
{
    public static void Main()
    {
        while (true)
        {
            var z = int.Parse(Console.ReadLine().Trim());
            if (z == 0) break;
            getAns(z);
        }
    }
    static int pow3(int x, int y, int z) => z * z * z - x * x * x - y * y * y;
    static void getAns (int z)
    {
        var x = 1;
        var y = z - 1;
        var ans = pow3(x, y, z);
        while (true)
        {
            x++;
            if (x > y) break;
            while (true)
            {
                var t = pow3(x, y, z);
                if (t < 0) y--;
                else { ans = Min(ans, t); break; }
            }
        }
        Console.WriteLine(ans);
    }
}