#include <bits/stdc++.h>
#define ll long long int
#define ld long double
#define vl vector<ll>
#define vi vector<int>
#define vvl vector< vl >
#define vvi vector< vi >
#define pb push_back
#define mp make_pair
#define max_int_value 2147483647
#define max_long_value 9223372036854775807
#define min_long_value -9223372036854775806
#define ii pair<ll,ll>
#define kk pair<int,int>
#define jj pair<kk,kk>
#define F first
#define S second
#define fast_io ios_base::sync_with_stdio(0);cin.tie(0)
#define CLR(v, d)     memset(v, d, sizeof(v))

#define ARRAY_SIZE(a) sizeof(a)/sizeof(a[0])
#define ALPHABET_SIZE (26)
#define CHAR_TO_INDEX(c) ((int)c - (int)'a')
 
template<typename T> T gcd(T a, T b){return (b?__gcd(a,b):a);}
template<typename T> T lcm(T a, T b){return (a*(b/gcd(a,b)));}
// template<typename T> T mod(T a, T b) {return (a<b ? a : a%b);}
// template<typename T> T mod_neg(T a, T b) {return ((a%b)+b)%b;}
// ll mulmod(ll a,ll b, ll m){ll q=(ll)(((ld)a*(ld)b)/(ld)m);ll r=a*b-q*m;if(r>m)r%=m;if(r<0)r+=m;return r;}
// template<typename T> T expo(T e, T n){T x=1,p=e;while(n){if(n&1)x=x*p;p=p*p;n>>=1;}return x;}
// template<typename T> T power(T e, T n, T m){T x=1,p=e;while(n){if(n&1)x=mod(x*p,m);p=mod(p*p,m);n>>=1;}return x;}
// template<typename T> T extended_euclid(T a, T b, T &x, T &y){T xx=0,yy=1;y=0;x=1;while(b){T q=a/b,t=b;b=a%b;a=t;t=xx;xx=x-q*xx;x=t;t=yy;yy=y-q*yy;y=t;}return a;}
// template<typename T> T mod_inverse(T a, T n){T x,y;T d = extended_euclid(a, n, x, y);return (d>1?-1:mod_neg(x,n));}
 
using namespace std;
 
string IntToString (int a) {
    ostringstream temp;
    temp<<a;
    return temp.str();
}
 
int StringToInt (string str) {
    int xx;
    stringstream ss;
    ss << str;
    ss >> xx;
    return xx;
}
 
ll powerwithmodulus(ll base, ll exponent,ll modulus) {
    ll result = 1; base%=modulus;
    while (exponent > 0) {
        if (exponent % 2 == 1) result = (result * base) % modulus;
        exponent = exponent >> 1;
        base = (base * base) % modulus;
    }
    return result;
}
 
/*  NCR using DP
for(int n = 0; n <= 1000; n++)
        for(int r = 0; r <= n; r++)
            if(r == 0 || n == r) ncr[n][r] = 1;
            else ncr[n][r] = (ncr[n-1][r-1] + ncr[n-1][r]) % mod;
*/
 
/* Compare function  
inline bool cmp(pair<ll,ll> &p1, pair<ll,ll> &p2) {
    if(p1.F == p2.F)
        return p1.S > p2.S;
    else
        return p1.F < p2.F;
}
*/


inline bool cmp1(pair<ii,ll> &p1, pair<ii,ll> &p2) {
    if(p1.F.F == p2.F.F)
        return p1.S < p2.S;
    else
        return p1.F.F < p2.F.F;
}

bool comp(ii &p1, ii &p2) {
    if(p1.F == p2.F)
        return p1.S > p2.S;
    else 
        return p1.F > p2.F;
}
 
// ll largestPowerOf2(ll n)
// {
//     return (ll)pow(2, floor(log(n) / log(2)));
// }
 
//lower case std::transform(str.begin(), str.end(), str.begin(), ::tolower);
//Ascii A-65 Z-90 a-97 z-122 0-48 9-57

ll gcd (ll n1, ll n2) {
    return (n2 == 0) ? n1 : gcd (n2, n1 % n2);
} 
   
// stack<int> mystack;    //mystack.push(i); mystack.top(); (!mystack.empty()) mystack.pop();
// queue<int> myqueue;     // myqueue.push (myint);   myqueue.front(); (!myqueue.empty()) myqueue.pop();
// std::vector<ii> v,u;
  
ll MOD=1000000007;

// map<std::string, int> dict;

time_t now1,now;

// ll give_a_random_number(ll min, ll max) 
// {
//    static bool first = true;
//    if ( first ) 
//    {  
//       srand(time(NULL)); 
//       first = false;
//    }
//    return min + rand() % (max - min);
// }

/* Compare class for priority queue

priority_queue<pair<ii,ll>, vector<pair<ii,ll> >, Compare > pri;

class Compare {
public:
        bool operator() (pair<ii,ll> &p1, pair<ii,ll> &p2) {
        return p1.S < p2.S;
    }
};
*/


ll i,j,t,a=0,b=0,c=0,d=0,p=0,q=0,r=0,s=0,m,n,w,k;
ll sum = 0, coun = 0, kar = 0;
long double ve, vy, len, train;




int main() 
{
    fast_io;
    string str;
    string str1 = "", str2 = "", str3 = "";
    int gd = 30, gm = 4, gy = 2019;
    cin>>str;
    c = 0;
    for(i=0;i<str.length();i++) {
        if(str[i] == '/') {
            c++;
            continue;
        } 

        if(c == 0) {
            str1 += str[i];
        } else if(c == 1) {
            str2 += str[i];
        } else {
            str3 += str[i];
        }
    }
    c = 0;
    //cout<<str3<<" "<<str2<<" "<<str1<<endl;
    if(StringToInt(str1) < gy) {
        c = 1;
    } else if(StringToInt(str1) == gy){
        if(StringToInt(str2) < gm) {
            c = 1;
        } else if(StringToInt(str2) == gm){
            if(StringToInt(str3) <= gd) {
                c = 1;
            }
        }    
    }
    if(c == 0) 
        cout<<"TBD"<<endl;
    else
        cout<<"Heisei"<<endl;
}


Measured memory_bytes: 256