#include #include using namespace std; unsigned long long combination(unsigned long long n, unsigned long long m) { if (n < m) { return 0; } unsigned long long smaller = min(m, n - m); unsigned long long larger = max(m, n - m); unsigned long long numerator = 1; for (unsigned long long x = n; x > larger; --x) { numerator *= x; } unsigned long long denominator = 1; for (unsigned long long x = smaller; x > 0; --x) { denominator *= x; } return numerator / denominator; } int main() { int c[26]; for (int i = 0; i < 26; ++i) { cin >> c[i]; } unsigned long long maxCount = 0; for (int formerL = 2; formerL < c['l' - 'a']; ++formerL) { for (int formerO = 1; formerO < c['o' - 'a']; ++formerO) { unsigned long long count = 1; count *= combination(c['h' - 'a'], 1); count *= combination(c['e' - 'a'], 1); count *= combination(formerL, 2); count *= combination(formerO, 1); count *= combination(c['w' - 'a'], 1); count *= combination(c['o' - 'a'] - formerO, 1); count *= combination(c['r' - 'a'], 1); count *= combination(c['l' - 'a'] - formerL, 1); count *= combination(c['d' - 'a'], 1); maxCount = max(maxCount, count); } } cout << maxCount << endl; return 0; }