public class Euler719 {
    static boolean isSNumber(long root) {
        long square = root * root;
        String s = Long.toString(square);
        int len = s.length();

        int[] digits = new int[len];
        for (int i = 0; i < len; ++i) {
            digits[i] = s.charAt(i) - '0';
        }

        long[] suffixValue = new long[len + 1];
        int[] suffixDigitSum = new int[len + 1];

        long place = 1;
        for (int i = len - 1; i >= 0; --i) {
            suffixValue[i] = digits[i] * place + suffixValue[i + 1];
            place *= 10;
            suffixDigitSum[i] = suffixDigitSum[i + 1] + digits[i];
        }

        return dfs(0, 0, root, len, digits, suffixValue, suffixDigitSum, true);
    }

    static boolean dfs(int pos, long sum, long root, int len, int[] digits, long[] suffixValue, int[] suffixDigitSum,
            boolean isFirst) {
        if (pos == len) {
            return !isFirst && sum == root;
        }

        long part = 0;
        int maxEnd = isFirst ? len - 2 : len - 1;
        for (int end = pos; end <= maxEnd; ++end) {
            part = part * 10 + digits[end];
            long nextSum = sum + part;
            if (nextSum > root) {
                break;
            }

            long minPossible = nextSum + suffixDigitSum[end + 1];
            if (minPossible > root) {
                continue;
            }
            long maxPossible = nextSum + suffixValue[end + 1];
            if (maxPossible < root) {
                continue;
            }

            if (dfs(end + 1, nextSum, root, len, digits, suffixValue, suffixDigitSum, false)) {
                return true;
            }
        }
        return false;
    }

    public static String solve() {
        long limit = 1000000000000L;
        long maxRoot = 1000000L;
        long sum = 0;

        for (long root = 2; root <= maxRoot; ++root) {
            int mod9 = (int) (root % 9);
            if (mod9 != 0 && mod9 != 1) {
                continue;
            }
            if (root * root > limit) {
                break;
            }
            if (isSNumber(root)) {
                sum += root * root;
            }
        }
        return Long.toString(sum);
    }

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