public class Euler260 {
    public static String solve() {
        int limit = 1000;
        int side = limit + 1;
        int tableSize = side * side;

        byte[] one = new byte[tableSize];
        byte[] two = new byte[tableSize];
        byte[] all = new byte[tableSize];

        long sum = 0;

        for (int x = 0; x <= limit; ++x) {
            for (int y = x; y <= limit; ++y) {
                int idXy = x * side + y;
                if (one[idXy] != 0)
                    continue;

                int dx = y - x;
                int ix = x * side;
                int iy = y * side;
                int idx = dx * side;

                for (int z = y; z <= limit; ++z) {
                    int idYz = iy + z;
                    int idXz = ix + z;
                    int idDxZ = idx + z;
                    int idDzX = (z - y) * side + x;
                    int idDzY = (z - x) * side + y;
                    int idDxDz = idx + (z - x);

                    if (one[idYz] != 0 || one[idXz] != 0 ||
                            two[idDxZ] != 0 || two[idDzX] != 0 || two[idDzY] != 0 ||
                            all[idDxDz] != 0) {
                        continue;
                    }

                    sum += (x + y + z);

                    one[idYz] = 1;
                    one[idXz] = 1;
                    one[idXy] = 1;

                    two[idDxZ] = 1;
                    two[idDzX] = 1;
                    two[idDzY] = 1;

                    all[idDxDz] = 1;
                    break;
                }
            }
        }

        return String.valueOf(sum);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
