public class Euler905 {

    static long powInt(long base, int exp) {
        long result = 1;
        for (int i = 0; i < exp; ++i) {
            result *= base;
        }
        return result;
    }

    static long nextTurnAfter(long t, int mod) {
        long candidate = t + 1;
        long r = candidate % 3;
        if (r == mod) {
            return candidate;
        }
        long add = (mod + 3 - r) % 3;
        return candidate + add;
    }

    static long computeF(long A, long B, long C) {
        int[] roleMod = { 1, 2, 0 };
        int[] roleBase = { 1, 2, 3 };
        java.util.List<Integer> roles = new java.util.ArrayList<>();
        int baseRole = -1;

        while (true) {
            if (A == B + C) {
                roles.add(0);
                if (B == C) {
                    baseRole = 0;
                    break;
                }
                A = (B >= C) ? (B - C) : (C - B);
            } else if (B == A + C) {
                roles.add(1);
                if (A == C) {
                    baseRole = 1;
                    break;
                }
                B = (A >= C) ? (A - C) : (C - A);
            } else {
                roles.add(2);
                if (A == B) {
                    baseRole = 2;
                    break;
                }
                C = (A >= B) ? (A - B) : (B - A);
            }
        }

        long turns = roleBase[baseRole];
        roles.remove(roles.size() - 1);
        for (int i = roles.size() - 1; i >= 0; --i) {
            turns = nextTurnAfter(turns, roleMod[roles.get(i)]);
        }
        return turns;
    }

    public static String solve() {
        long total = 0;
        for (int a = 1; a <= 7; a++) {
            for (int b = 1; b <= 19; ++b) {
                long A = powInt(a, b);
                long B = powInt(b, a);
                long C = A + B;
                total += computeF(A, B, C);
            }
        }
        return Long.toString(total);
    }

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