Problem p03109 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>
#define ll long long
#define vll vector<ll>
#define pb push_back
#define rep(i, a, b, c) for (ll i = (a); i <= (b); i += (c))
#define repb(i, a, b, c) for (ll i = (a); i >= (b); i -= (c))
#define MOD 1000000007
#define ld double
#define mp make_pair
#define vpll vector<pair<ll, ll>>
#define vll vector<ll>
#define pll pair<ll, ll>
#define pld pair<ll, ld>
#define all(x) x.begin(), x.end()
#define fi first
#define se second
#define ln cout << "\n";
#define test                                                                   \
  ll T;                                                                        \
  cin >> T;                                                                    \
  while (T--)
#define fastIO                                                                 \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);                                                                  \
  cout.tie(0);
using namespace std;
void __print(int x) { cout << x; }
void __print(long x) { cout << x; }
void __print(long long x) { cout << x; }
void __print(unsigned x) { cout << x; }
void __print(unsigned long x) { cout << x; }
void __print(unsigned long long x) { cout << x; }
void __print(float x) { cout << x; }
void __print(double x) { cout << x; }
void __print(long double x) { cout << x; }
void __print(char x) { cout << '\'' << x << '\''; }
void __print(const char *x) { cout << '\"' << x << '\"'; }
void __print(const string &x) { cout << '\"' << x << '\"'; }
void __print(bool x) { cout << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cout << '{';
  __print(x.first);
  cout << ',';
  __print(x.second);
  cout << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cout << '{';
  for (auto &i : x)
    cout << (f++ ? "," : ""), __print(i);
  cout << "}";
}
void _print() { cout << "]\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cout << ", ";
  _print(v...);
}

ll gcd(ll a, ll b) {
  if (a < b)
    return gcd(b, a);
  else if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
ll isPrime(ll n) {
  ll p = (ll)sqrt(n);
  rep(i, 2, p, 1) if (n % i == 0) return 0;
  return 1;
} // reuturn 1 if prime
ll powm(ll x, ll y, ll m = MOD) {
  x = x % m;
  ll res = 1;
  while (y) {
    if (y & 1)
      res = res * x;
    res %= m;
    y = y >> 1;
    x = x * x;
    x %= m;
  }
  return res;
}
ll lcm(ll a, ll b) { return (a * b) / gcd(a, b); }
ll modInverse(ll a, ll m) { return powm(a, m - 2, m); }
bool issq(ll n) {
  ll p = sqrt(n);
  return p * p == n;
}
ll MIN(ll a = 2e18, ll b = 2e18, ll c = 2e18, ll d = 2e18, ll e = 2e18) {
  return min(a, min(b, min(c, min(d, e))));
}
ll MAX(ll a = -2e18, ll b = -2e18, ll c = -2e18, ll d = -2e18, ll e = -2e18) {
  return max(a, max(b, max(c, max(d, e))));
}
vll prime; // if i==prime[i] then prime otherwise smallest prime factor of that
           // number
void seive(ll n) {
  prime.resize(n + 1);
  rep(i, 2, n, 1) if (prime[i] == 0) {
    prime[i] = i;
    rep(j, i * i, n, i) if (prime[j] == 0) prime[j] = i;
  }
}
#define isvowel(a) (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u')

ll extended_GCD(ll a, ll b, ll &x, ll &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  ll x1, y1;
  ll gcd = extended_GCD(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return gcd;
}
ll mulInv(ll a, ll mod) {
  ll x, y;
  extended_GCD(a, mod, x, y);
  if (x < 0)
    x += mod;
  return x;
}
int main() {
  fastIO

#ifndef ONLINE_JUDGE
#define debug(x...)                                                            \
  cout << "[" << #x << "] = [";                                                \
  _print(x)
      freopen("input.txt", "r", stdin);
  freopen("out.txt", "w", stdout);
  freopen("out.txt", "w", stderr);
#else
#define debug(x...)
#endif

  string s;
  cin >> s;
  ll m = int(10 * (s[5] - '0') + s[6]) - '0';
  ll d = int(s[8] + s[9]);
  // cout<<m;
  if (m <= 4)
    cout << "Heisei";
  else
    cout << "TBD";

  return 0;
}

Fixed submission:
#include <bits/stdc++.h>
#define ll long long
#define vll vector<ll>
#define pb push_back
#define rep(i, a, b, c) for (ll i = (a); i <= (b); i += (c))
#define repb(i, a, b, c) for (ll i = (a); i >= (b); i -= (c))
#define MOD 1000000007
#define ld double
#define mp make_pair
#define vpll vector<pair<ll, ll>>
#define vll vector<ll>
#define pll pair<ll, ll>
#define pld pair<ll, ld>
#define all(x) x.begin(), x.end()
#define fi first
#define se second
#define ln cout << "\n";
#define test                                                                   \
  ll T;                                                                        \
  cin >> T;                                                                    \
  while (T--)
#define fastIO                                                                 \
  ios_base::sync_with_stdio(0);                                                \
  cin.tie(0);                                                                  \
  cout.tie(0);
using namespace std;
void __print(int x) { cout << x; }
void __print(long x) { cout << x; }
void __print(long long x) { cout << x; }
void __print(unsigned x) { cout << x; }
void __print(unsigned long x) { cout << x; }
void __print(unsigned long long x) { cout << x; }
void __print(float x) { cout << x; }
void __print(double x) { cout << x; }
void __print(long double x) { cout << x; }
void __print(char x) { cout << '\'' << x << '\''; }
void __print(const char *x) { cout << '\"' << x << '\"'; }
void __print(const string &x) { cout << '\"' << x << '\"'; }
void __print(bool x) { cout << (x ? "true" : "false"); }

template <typename T, typename V> void __print(const pair<T, V> &x) {
  cout << '{';
  __print(x.first);
  cout << ',';
  __print(x.second);
  cout << '}';
}
template <typename T> void __print(const T &x) {
  int f = 0;
  cout << '{';
  for (auto &i : x)
    cout << (f++ ? "," : ""), __print(i);
  cout << "}";
}
void _print() { cout << "]\n"; }
template <typename T, typename... V> void _print(T t, V... v) {
  __print(t);
  if (sizeof...(v))
    cout << ", ";
  _print(v...);
}

ll gcd(ll a, ll b) {
  if (a < b)
    return gcd(b, a);
  else if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
ll isPrime(ll n) {
  ll p = (ll)sqrt(n);
  rep(i, 2, p, 1) if (n % i == 0) return 0;
  return 1;
} // reuturn 1 if prime
ll powm(ll x, ll y, ll m = MOD) {
  x = x % m;
  ll res = 1;
  while (y) {
    if (y & 1)
      res = res * x;
    res %= m;
    y = y >> 1;
    x = x * x;
    x %= m;
  }
  return res;
}
ll lcm(ll a, ll b) { return (a * b) / gcd(a, b); }
ll modInverse(ll a, ll m) { return powm(a, m - 2, m); }
bool issq(ll n) {
  ll p = sqrt(n);
  return p * p == n;
}
ll MIN(ll a = 2e18, ll b = 2e18, ll c = 2e18, ll d = 2e18, ll e = 2e18) {
  return min(a, min(b, min(c, min(d, e))));
}
ll MAX(ll a = -2e18, ll b = -2e18, ll c = -2e18, ll d = -2e18, ll e = -2e18) {
  return max(a, max(b, max(c, max(d, e))));
}
vll prime; // if i==prime[i] then prime otherwise smallest prime factor of that
           // number
void seive(ll n) {
  prime.resize(n + 1);
  rep(i, 2, n, 1) if (prime[i] == 0) {
    prime[i] = i;
    rep(j, i * i, n, i) if (prime[j] == 0) prime[j] = i;
  }
}
#define isvowel(a) (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u')

ll extended_GCD(ll a, ll b, ll &x, ll &y) {
  if (a == 0) {
    x = 0;
    y = 1;
    return b;
  }
  ll x1, y1;
  ll gcd = extended_GCD(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return gcd;
}
ll mulInv(ll a, ll mod) {
  ll x, y;
  extended_GCD(a, mod, x, y);
  if (x < 0)
    x += mod;
  return x;
}
int main() {
  fastIO

      string s;
  cin >> s;
  ll m = int(10 * (s[5] - '0') + s[6]) - '0';
  ll d = int(s[8] + s[9]);
  // cout<<m;
  if (m <= 4)
    cout << "Heisei";
  else
    cout << "TBD";

  return 0;
}