#include <bits/stdc++.h>
using namespace std;
vector<int> Primes;
vector<pair<long long, int> > ppf;
vector<int> divset;
bool sieve[100001 + 6];
void primeTable() {
  int i, j;
  Primes.clear();
  Primes.push_back(2);
  int lim = sqrt((double)100001) + 2;
  for (i = 2; i < 100001; i += 2) sieve[i] = true;
  for (i = 3; i < lim; i += 2) {
    if (!sieve[i]) {
      Primes.push_back(i);
      for (j = i * i; j <= 100001; j += (i << 1)) sieve[j] = true;
    }
  }
  for (; i < 100001; i += 2) {
    if (!sieve[i]) Primes.push_back(i);
  }
}
void factor(int N) {
  ppf.clear();
  int n = N, p;
  int freq, i;
  for (i = 0; n != 1 && i < Primes.size(); ++i) {
    p = Primes[i];
    if (Primes[i] > sqrt((double)n) + 1) break;
    if (n % p == 0) {
      freq = 0;
      while (n % p == 0) {
        n /= p;
        ++freq;
      }
      ppf.push_back(make_pair(p, freq));
    }
  }
  if (n > 1) ppf.push_back(make_pair(n, 1));
}
void divisor(int N) {
  factor(N);
  divset.clear();
  divset.push_back(1);
  int p, m;
  int i, j, f, exs;
  for (i = 0; i < ppf.size(); ++i) {
    p = ppf[i].first, f = ppf[i].second;
    m = 1, exs = divset.size();
    while (f--) {
      m *= p;
      for (j = 0; j < exs; ++j) divset.push_back(divset[j] * m);
    }
  }
  sort(divset.begin(), divset.end());
}
int main() {
  primeTable();
  int N, M, K, i, s;
  while (scanf("%d %d %d", &N, &M, &K) != EOF) {
    if (N % 2 == 0 || M == 1)
      puts("Marsel");
    else {
      divisor(M);
      for (i = divset.size() - 1; i > 0; --i) {
        s = M / divset[i];
        if (s >= K) break;
      }
      if (i == 0)
        puts("Marsel");
      else
        puts("Timur");
    }
  }
  return 0;
}
