#include <bits/stdc++.h>
#define ll long long
#define PI 3.14159265359
#define DP(x, y) memset(x, y, sizeof x)
#define all(x) x.begin(), x.end()
#define read(x) freopen("x", "r", stdin);
#define write(x) freopen("x", "w", stdout);
using namespace std;
ll gcd(ll a,ll b) { while(b) { ll x = a; a = b; b = x % b; } return a; }
ll lcm(ll a,ll b) { return a / gcd(a, b) * b; }
ll nC2(ll n) { return (n)*(n-1)/2; }
ll summing(ll n) { return (n)*(n+1); }
ll ans=0, mod=1e9 + 9;
map<char,vector<char>> mp;
map<char,ll>ind;
vector<char> v{'a', 'e', 'i', 'o', 'u'};
ll dp[5][200005];
ll counting(ll j, ll n, vector<char> &a, vector<char> &temp) {
if (j == n) {
return 1;
}
ll sum = 0;
for (ll i=0; i<a.size(); i++) {
if (~dp[ ind[a[i]] ][j]) {
sum += dp[ ind[a[i]] ][j];
continue;
}
temp.push_back(a[i]);
dp[ind[a[i]]][j] = counting(j+1, n, mp[a[i]], temp)%mod;
temp.pop_back();
sum += dp[ind[a[i]]][j]%mod;
sum %= mod;
}
return (sum%mod);
}
void solve() {
ll n; cin >> n;
DP(dp, -1);
ind['a'] = 0;
ind['e'] = 1;
ind['i'] = 2;
ind['o'] = 3;
ind['u'] = 4;
vector<char> c;
mp['a'].push_back('e');
mp['e'].push_back('a');
mp['e'].push_back('i');
mp['i'].push_back('a');
mp['i'].push_back('e');
mp['i'].push_back('o');
mp['i'].push_back('u');
mp['o'].push_back('i');
mp['o'].push_back('u');
mp['u'].push_back('a');
ans = counting(0, n, v, c);
cout << ans;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
ll t=1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgUEkgMy4xNDE1OTI2NTM1OQojZGVmaW5lIERQKHgsIHkpIG1lbXNldCh4LCB5LCBzaXplb2YgeCkKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLCB4LmVuZCgpCiNkZWZpbmUgcmVhZCh4KSBmcmVvcGVuKCJ4IiwgInIiLCBzdGRpbik7CiNkZWZpbmUgd3JpdGUoeCkgZnJlb3BlbigieCIsICJ3Iiwgc3Rkb3V0KTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpsbCBnY2QobGwgYSxsbCBiKSB7IHdoaWxlKGIpIHsgbGwgeCA9IGE7IGEgPSBiOyBiID0geCAlIGI7IH0gcmV0dXJuIGE7IH0KbGwgbGNtKGxsIGEsbGwgYikgeyByZXR1cm4gYSAvIGdjZChhLCBiKSAqIGI7IH0KbGwgbkMyKGxsIG4pIHsgcmV0dXJuIChuKSoobi0xKS8yOyB9CmxsIHN1bW1pbmcobGwgbikgeyByZXR1cm4gKG4pKihuKzEpOyB9CgpsbCBhbnM9MCwgbW9kPTFlOSArIDk7CgptYXA8Y2hhcix2ZWN0b3I8Y2hhcj4+IG1wOwptYXA8Y2hhcixsbD5pbmQ7CnZlY3RvcjxjaGFyPiB2eydhJywgJ2UnLCAnaScsICdvJywgJ3UnfTsKbGwgZHBbNV1bMjAwMDA1XTsKCmxsIGNvdW50aW5nKGxsIGosIGxsIG4sIHZlY3RvcjxjaGFyPiAmYSwgdmVjdG9yPGNoYXI+ICZ0ZW1wKSB7CgogICAgaWYgKGogPT0gbikgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGxsIHN1bSA9IDA7CgogICAgZm9yIChsbCBpPTA7IGk8YS5zaXplKCk7IGkrKykgewoKICAgICAgICBpZiAofmRwWyBpbmRbYVtpXV0gXVtqXSkgewogICAgICAgICAgICBzdW0gKz0gZHBbIGluZFthW2ldXSBdW2pdOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIHRlbXAucHVzaF9iYWNrKGFbaV0pOwoKICAgICAgICBkcFtpbmRbYVtpXV1dW2pdID0gY291bnRpbmcoaisxLCBuLCBtcFthW2ldXSwgdGVtcCklbW9kOwoKICAgICAgICB0ZW1wLnBvcF9iYWNrKCk7CgogICAgICAgIHN1bSArPSBkcFtpbmRbYVtpXV1dW2pdJW1vZDsKICAgICAgICBzdW0gJT0gbW9kOwogICAgfQoKICAgIHJldHVybiAoc3VtJW1vZCk7Cn0KCnZvaWQgc29sdmUoKSB7CgogICAgbGwgbjsgY2luID4+IG47CgogICAgRFAoZHAsIC0xKTsKCiAgICBpbmRbJ2EnXSA9IDA7CiAgICBpbmRbJ2UnXSA9IDE7CiAgICBpbmRbJ2knXSA9IDI7CiAgICBpbmRbJ28nXSA9IDM7CiAgICBpbmRbJ3UnXSA9IDQ7CgogICAgdmVjdG9yPGNoYXI+IGM7CiAgICBtcFsnYSddLnB1c2hfYmFjaygnZScpOwoKICAgIG1wWydlJ10ucHVzaF9iYWNrKCdhJyk7CiAgICBtcFsnZSddLnB1c2hfYmFjaygnaScpOwoKICAgIG1wWydpJ10ucHVzaF9iYWNrKCdhJyk7CiAgICBtcFsnaSddLnB1c2hfYmFjaygnZScpOwogICAgbXBbJ2knXS5wdXNoX2JhY2soJ28nKTsKICAgIG1wWydpJ10ucHVzaF9iYWNrKCd1Jyk7CgogICAgbXBbJ28nXS5wdXNoX2JhY2soJ2knKTsKICAgIG1wWydvJ10ucHVzaF9iYWNrKCd1Jyk7CgogICAgbXBbJ3UnXS5wdXNoX2JhY2soJ2EnKTsKCiAgICBhbnMgPSBjb3VudGluZygwLCBuLCB2LCBjKTsKCiAgICBjb3V0IDw8IGFuczsKCn0KCmludCBtYWluKCkKewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKSwgY291dC50aWUobnVsbHB0cik7CgogICAgbGwgdD0xOwogICAgLy9jaW4gPj4gdDsKCiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQo=