/* http://projecteuler.net/
 *
 * Problem 56
 * Considering natural numbers of the form, a^b, where a, b < 100, what is
 * the maximum digital sum?
 *
 * Solution by Melkor (Filip Niksic, fniksic@gmail.com)
 *
 **/

#include <iostream>
#include <vector>

using namespace std;

const int base = 10000;

class Number {
    vector<int> v;
public:
    explicit Number(int n = 0) : v(vector<int>(1, n)) {}
    Number& mul(int d) {
	int carry = 0;
	for (int i = 0; i < v.size(); ++i) {
	    v[i] = v[i] * d + carry;
	    carry = v[i] / base;
	    v[i] %= base;
	}
	if (carry)
	    v.push_back(carry);
	return *this;
    }
    int dsum() {
	int ds = 0;
	for (int i = 0; i < v.size(); ++i) {
	    int tmp = v[i];
	    while (tmp) {
		ds += tmp % 10;
		tmp /= 10;
	    }
	}
	return ds;
    }
};

int main() {
    int max = 0;
    for (int a = 1; a < 100; ++a) {
	Number n(1);
	for (int b = 1; b < 100; ++b) {
	    n.mul(a);
	    int dsum = n.dsum();
	    if (dsum > max)
		max = dsum;
	}
    }

    cout << max << endl;

    return 0;
}

