Language: C++

//THIS IS A UBER HUGE BLACKISH DICK MOVE!
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strconv"
)

/********** I/O usage **********/

//str := ReadString()
//i := ReadInt()
//X := ReadIntSlice(n)
//S := ReadRuneSlice()
//a := ReadFloat64()
//A := ReadFloat64Slice(n)

//str := PrintlnInts(X...)

/*******************************************************************/

func digitToInt(c byte) int {
	return int(c - '0')
}

func month(m string) int {
	return digitToInt(m[0])*10 + digitToInt(m[1])
}

func day(d string) int {
	return month(d)
}

func main() {
	s := ReadString()
	ans := " TBD "
	m := s[5:7]
	d := s[8:]
	month := month(m)
	day := day(d)
	if (month < 4) || (month == 4 && day <= 30) {
		ans = " Heisei "
	}
	fmt.Println(ans)
}

/*********** Math ***********/
func abs(a int) int {
	if a < 0 {
		return -a
	}
	return a
}

func min(args ...int) int {
	if len(args) == 0 {
		panic("empty!")
	}
	min := args[0]
	for i := 1; i < len(args); i++ {
		if args[i] < min {
			min = args[i]
		}
	}
	return min
}

func max(args ...int) int {
	if len(args) == 0 {
		panic("empty!")
	}
	max := args[0]
	for i := 1; i < len(args); i++ {
		if args[i] > max {
			max = args[i]
		}
	}
	return max
}

func _gcd(a, b int) int {
	if b == 0 {
		return a
	}
	return _gcd(b, a%b)
}

func gcd(args ...int) int {
	if len(args) == 0 {
		panic("empty!")
	}
	gcd := args[0]
	for i := 1; i < len(args); i++ {
		gcd = _gcd(gcd, args[i])
	}
	return gcd
}

/*********** I/O ***********/

var (
	// ReadString returns a WORD string.
	ReadString func() string
	stdout     *bufio.Writer
)

func init() {
	ReadString = newReadString(os.Stdin)
	stdout = bufio.NewWriter(os.Stdout)
}

func newReadString(ior io.Reader) func() string {
	r := bufio.NewScanner(ior)
	r.Buffer(make([]byte, 1024), int(1e+11))
	// Split sets the split function for the Scanner. The default split function is ScanLines.
	// Split panics if it is called after scanning has started.
	r.Split(bufio.ScanWords)

	return func() string {
		if !r.Scan() {
			panic("Scan failed")
		}
		return r.Text()
	}
}

// ReadInt returns an integer.
func ReadInt() int {
	return int(readInt64())
}
func ReadInt2() (int, int) {
	return int(readInt64()), int(readInt64())
}
func ReadInt3() (int, int, int) {
	return int(readInt64()), int(readInt64()), int(readInt64())
}
func ReadInt4() (int, int, int, int) {
	return int(readInt64()), int(readInt64()), int(readInt64()), int(readInt64())
}

func readInt64() int64 {
	i, err := strconv.ParseInt(ReadString(), 0, 64)
	if err != nil {
		panic(err.Error())
	}
	return i
}

// ReadIntSlice returns an integer slice that has n integers.
func ReadIntSlice(n int) []int {
	b := make([]int, n)
	for i := 0; i < n; i++ {
		b[i] = ReadInt()
	}
	return b
}

// ReadFloat64 returns an float64.
func ReadFloat64() float64 {
	return float64(readFloat64())
}

func readFloat64() float64 {
	f, err := strconv.ParseFloat(ReadString(), 64)
	if err != nil {
		panic(err.Error())
	}
	return f
}

// ReadFloatSlice returns an float64 slice that has n float64.
func ReadFloat64Slice(n int) []float64 {
	b := make([]float64, n)
	for i := 0; i < n; i++ {
		b[i] = ReadFloat64()
	}
	return b
}

// ReadRuneSlice returns a rune slice.
func ReadRuneSlice() []rune {
	return []rune(ReadString())
}

// PrintIntsLine returns integers string delimited by a space.
func PrintlnInts(A ...int) string {
	res := []rune{}

	for i := 0; i < len(A); i++ {
		str := strconv.Itoa(A[i])
		res = append(res, []rune(str)...)

		if i != len(A)-1 {
			res = append(res, ' ')
		}
	}

	return string(res)
}


Compiler output:
a.cc:2:1: error: 'package' does not name a type
    2 | package main
      | ^~~~~~~
a.cc:29:1: error: 'func' does not name a type
   29 | func month(m string) int {
      | ^~~~
a.cc:33:1: error: 'func' does not name a type
   33 | func day(d string) int {
      | ^~~~
a.cc:37:1: error: 'func' does not name a type
   37 | func main() {
      | ^~~~
a.cc:51:1: error: 'func' does not name a type
   51 | func abs(a int) int {
      | ^~~~
a.cc:58:1: error: 'func' does not name a type
   58 | func min(args ...int) int {
      | ^~~~
a.cc:71:1: error: 'func' does not name a type
   71 | func max(args ...int) int {
      | ^~~~
a.cc:84:1: error: 'func' does not name a type
   84 | func _gcd(a, b int) int {
      | ^~~~
a.cc:91:1: error: 'func' does not name a type
   91 | func gcd(args ...int) int {
      | ^~~~
a.cc:104:5: error: expected constructor, destructor, or type conversion before '(' token
  104 | var (
      |     ^
a.cc:115:1: error: 'func' does not name a type
  115 | func newReadString(ior io.Reader) func() string {
      | ^~~~
a.cc:131:1: error: 'func' does not name a type
  131 | func ReadInt() int {
      | ^~~~
a.cc:134:1: error: 'func' does not name a type
  134 | func ReadInt2() (int, int) {
      | ^~~~
a.cc:137:1: error: 'func' does not name a type
  137 | func ReadInt3() (int, int, int) {
      | ^~~~
a.cc:140:1: error: 'func' does not name a type
  140 | func ReadInt4() (int, int, int, int) {
      | ^~~~
a.cc:144:1: error: 'func' does not name a type
  144 | func readInt64() int64 {
      | ^~~~
a.cc:153:1: error: 'func' does not name a type
  153 | func ReadIntSlice(n int) []int {
      | ^~~~
a.cc:162:1: error: 'func' does not name a type
  162 | func ReadFloat64() float64 {
      | ^~~~
a.cc:166:1: error: 'func' does not name a type
  166 | func readFloat64() float64 {
      | ^~~~
a.cc:175:1: error: 'func' does not name a type
  175 | func ReadFloat64Slice(n int) []float64 {
      | ^~~~
a.cc:184:1: error: 'func' does not name a type
  184 | func ReadRuneSlice() []rune {
      | ^~~~
a.cc:189:1: error: 'func' does not name a type
  189 | func PrintlnInts(A ...int) string {
      | ^~~~