//#pragma GCC optimize ("-O3","unroll-loops")
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<math.h>
#include<iomanip>
#include<set>
#include<numeric>
#include<cstring>
#include<cstdio>
#include<functional>
#include<bitset>
#include<limits.h>
#include<cassert>
#include<iterator>
#include<complex>
#include<stack>
#include<unordered_map>
#include<unordered_set>


#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
#define FORR(i, m, n) for(int i = m;i >= n;i--)
#define SORT(v, n) sort(v, v+n);
#define VSORT(v) sort(v.begin(), v.end());
#define REVERSE(v,n) reverse(v,v+n);
#define VREVERSE(v) reverse(v.begin(), v.end());
#define ll long long
#define pb(a) push_back(a)
#define print(x) cout<<x<<'\n';
#define pe(x) cout<<x<<" ";
#define lb(v,n) lower_bound(v.begin(), v.end(), n);
#define ub(v,n) upper_bound(v.begin(), v.end(), n);
#define int long long
#define all(x) (x).begin(), (x).end()
//#define double long double

using namespace std;

template<typename T1, typename T2> inline void chmin(T1 &a, T2 b) { if (a>b) a = b; }
template<typename T1, typename T2> inline void chmax(T1 &a, T2 b) { if (a<b) a = b; }

const int MOD = 1e9 + 7;
const ll INF = 1e17;
const int INT_INF = 1e9;
const double pi = acos(-1);
const double EPS = 1e-10;
typedef pair<int, int>P;
const int MAX = 200020;

int mex(unordered_set<int>st) {
	REP(i, 3) {
		if (st.find(i) == st.end())return i;
	}
}

int calc_grundy(int N, int M) {
	if (N * 2 > M) {
		return (M - N) % 2;
	}
	else if (M&1) {
		if (N&1)return 0;
		int cnt = 0;
		while(M>=N){
			cnt++;
			M /= 2;
		}
		return 2 - (cnt&1);
	}
	else{
		int x, y, z;
		x = 0, y = 1, z = (M / 2) & 1 ? 0 : 1;
		bool even = 1;
		while (M/2 >= N) {
			if (M / 2 == 1 && N == 1) {
				if (M == 3)return mex({ y }); else return mex({ x });
			}
			//cout << "M:" << M;
			M /= 2;
			if (even) {
				//vector<int>v;
				//v.pb(z); v.pb(x);
				unordered_set<int>st;
				st.insert(z); st.insert(x);
				int new_x = mex(st);
				//vector<int>v2; v2.pb(new_x); v2.pb(x);
				unordered_set<int>st2;
				st2.insert(new_x); st2.insert(x);
				int new_y = mex(st2);
				int z_pos = M / 2 + 1;
				z = (M - z_pos) & 1 ? new_y : new_x;
				x=new_x; y = new_y;
			}
			else {
				unordered_set<int>st;
				st.insert(z); st.insert(y);
				int new_x = mex(st);
				unordered_set<int>st2;
				st2.insert(new_x); st2.insert(y);
				int new_y = mex(st2);
				int z_pos = M / 2 + 1;
				z = (M - z_pos) & 1 ? new_y : new_x;
				x = new_x; y = new_y;
			}
			//cout << "M:" << M << " x:" << x << " y:" << y << " z:" << z << endl;
			if (M % 2 == 0)even = true; else even = false;
		}
		//if (N == 2) { pe("M")print(M); };
		if ((M - N) & 1)return y; else return x;
	}
}
void show(int M) {
	FORR(i, M, 1) {
		pe(i)print(calc_grundy(i,M));
	}
}
signed main() {
	cin.tie(0);
	ios::sync_with_stdio(false);

	/*while (true) {
		int M; cin >> M;
		show(M);
	}*/
	//calc_grundy(3, 30);
	/*FORR(i, 20, 1) {
		pe(i)print(calc_grundy(i, 20));
	}*/
	//print(calc_grundy(2, 20));
	int grundy = 0;
	int K; cin >> K;
	int n, m;
	REP(i, K) {
		cin >> n >> m;
		/*FORR(j, m,1) {
			cout << j << ":" << calc_grundy(j, m) << endl;
		}*/
		grundy ^= calc_grundy(n, m);
	}
	if (grundy)print("mo3tthi")else print("tubuann");
}




Measured memory_bytes: 3212