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 main() {
	a, b, _ := ReadInt3()

	fmt.Println(a * b / 2)
}

/*********** 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:32:1: error: 'func' does not name a type
   32 | func abs(a int) int {
      | ^~~~
a.cc:39:1: error: 'func' does not name a type
   39 | func min(args ...int) int {
      | ^~~~
a.cc:52:1: error: 'func' does not name a type
   52 | func max(args ...int) int {
      | ^~~~
a.cc:65:1: error: 'func' does not name a type
   65 | func _gcd(a, b int) int {
      | ^~~~
a.cc:72:1: error: 'func' does not name a type
   72 | func gcd(args ...int) int {
      | ^~~~
a.cc:85:5: error: expected constructor, destructor, or type conversion before '(' token
   85 | var (
      |     ^
a.cc:96:1: error: 'func' does not name a type
   96 | func newReadString(ior io.Reader) func() string {
      | ^~~~
a.cc:112:1: error: 'func' does not name a type
  112 | func ReadInt() int {
      | ^~~~
a.cc:115:1: error: 'func' does not name a type
  115 | func ReadInt2() (int, int) {
      | ^~~~
a.cc:118:1: error: 'func' does not name a type
  118 | func ReadInt3() (int, int, int) {
      | ^~~~
a.cc:121:1: error: 'func' does not name a type
  121 | func ReadInt4() (int, int, int, int) {
      | ^~~~
a.cc:125:1: error: 'func' does not name a type
  125 | func readInt64() int64 {
      | ^~~~
a.cc:134:1: error: 'func' does not name a type
  134 | func ReadIntSlice(n int) []int {
      | ^~~~
a.cc:143:1: error: 'func' does not name a type
  143 | func ReadFloat64() float64 {
      | ^~~~
a.cc:147:1: error: 'func' does not name a type
  147 | func readFloat64() float64 {
      | ^~~~
a.cc:156:1: error: 'func' does not name a type
  156 | func ReadFloat64Slice(n int) []float64 {
      | ^~~~
a.cc:165:1: error: 'func' does not name a type
  165 | func ReadRuneSlice() []rune {
      | ^~~~
a.cc:170:1: error: 'func' does not name a type
  170 | func PrintlnInts(A ...int) string {
      | ^~~~