Go: package main
// 三角形の形は辺の長さで決まる． 順番に３つの正整数が与えられたとき， 辺の長さがそれらの値と一致する三角形が存在するかどうかを調べ,
//  存在するなら鋭角三角形，直角三角形，鈍角三角形のいずれかを判定し， 次の入力へ進む． 三角形が存在しないとき， それまでに入力された，
// 三角形，直角三角形，鋭角三角形，鈍角三角形の 個数を空白で区切って出力し， それ以降の入力は無視して終了する
// 入力の中には必ず三角形が存在しないようなものがある と仮定してよい. 入力の行数は判らないが各行には３つの正整数が空白で区切って書かれている．
//  ただし，各整数は100 以下とする.

// return
// 三角形 直角三角形　鈍角三角形 鈍角三角形
import (
	"os"
	"fmt"
	"bufio"
)


var sc = bufio.NewScanner(os.Stdin)

func max(a, b, c int) (int, int, int) {
	if a > b {
		if b > c {
			return a, b, c
		} else {
			return c, a, b
		}
	} else {
		if b > c {
			return b, a, c
		} else {
			return c, b, a
		}
	}
}

func find_trianges(a, b, c int) string {
	a, b, c = max(a, b, c)
	r := b*b + c*c
	if a*a > r {
		return "obtuse_triangle"
	} else if a*a < r {
		return "sharped_triangle"
	} else {
		return "right_triangle"
	}
}

func main() {
	s := bufio.NewScanner(os.Stdin)
	var t, r_t, s_t, o_t int = 0, 0, 0, 0
	for s.Scan() {
		var a, b, c int
		fmt.Sscan(s.Text(), &a, &b, &c)
			a, b, c = max(a, b, c)
			if (a < b + c) {
				r := find_trianges(a, b, c)
				switch r {
				case "right_triangle":
					r_t++
				case "sharped_triangle":
					s_t++
				case "obtuse_triangle":
					o_t++
				}
				t++
			}	else {
				break
			}
			
	}
	fmt.Println(t, r_t, s_t, o_t)
}

Python: def triangle(a, b, c):
    if a+b > c and b+c > a and c+a > b:
        if a**2 == b**2 + c**2:
            return 0
        elif a**2 < b**2 + c**2:
            return 1
        elif a**2 > b**2 + c**2:
            return 2
    else:
        return 3

ans = [0] * 3
while True:
    try:
        a, b, c = sorted(map(int, input().split()))[::-1]
        ans[triangle(a, b, c)] += 1
    except:
        break
print(sum(ans), *ans)

Python: def t_check(a,b,c):
    if a + b > c:
        if b + c > a:
            if a + c > b: return True
    return False

def f_check(a_, b_, c_):
    tmp = []
    tmp.append(a_)
    tmp.append(b_)
    tmp.append(c_)
    sqrts = []
    for i in range(3):
        sqrts.append(tmp[i]**2)
    m = max(sqrts)
    s = sum(sqrts)

    if m == (s - m): return(0)
    if m > (s - m): return(2)
    if m < (s - m): return(1)
    
counter=[0,0,0]
    
while(1):
    input_f = input()

    t = input_f.split("\n").split()
    fn, sn, tn = int(t[0]),int(t[1]),int(t[2])
    if t_check(fn,sn,tn):
        counter[f_check(fn,sn,tn)] += 1
    else: break
    
print(sum(counter),counter[0], counter[1], counter[2])

Python: result = [0]*3
while True:
    a, b, c = sorted(map(int, input().split()))
    if a + b <= c:
        print(sum(result),*result)
        break
    flag = a ** 2 + b ** 2 - c*c
    if flag == 0:
        result[0] +=1
    elif flag >0:
        result[1] += 1
    else:
        result[2] += 1

Python: def checkTriangle(a, b, c):
    if a + b > c and a + c > b and b + c > a:
        return True
    return False


def checkOct(a, b, c):
    a, b, c = [i * i for i in [a, b, c]]
    if a + b == c or a + c == b or b + c == a:
        return 0
    elif c < a + b or b < a + c or a < b + c:
        return 1
    else:
        return 2

for i in range(5):
    #a, b, c = map(int, input())
    result = [0] * 3
    if checkTriangle(a, b, c):
        result[checkOct(a, b, c)] += 1
print(sum(result),*result)

Python: ans = [0 for i in range(4)]
while True:
  sides = sorted([int(input()) for i in range(3)])
  if sides[2] >= sides[1] + sides[0]:
    print(ans[0], ans[1], ans[2], ans[3])
    break
  if sides[2]**2 >= sides[1]**2 + sides[0]**2:
    ans[3]+=1
  elif sides[2]**2 == sides[1]**2 + sides[0]**2:
    ans[2]+=1
  else:
    ans[1]+=1

Python: import sys
num = 0
triangle = {"chokkaku":0,"eikaku":0,"donkaku":0}
for i in sys.stdin:
    hen = list(map(int,i.split()))
    hen.sort()
    if (hen[0] + hen[1] < hen[2]) or (hen[1] + hen[2] < hen[0]) or (hen[2] + hen[0] < hen[1]):
        break
    else:
        num += 1
        if hen[0]**2 + hen[1] ** 2 == hen[2] **2:
            triangle["chokkaku"] += 1
        elif hen[0] ** 2 + hen[1] ** 2 < hen[2] **2:
            triangle["donkaku"] += 1
        else:
            triangle["eikaku"] += 1

kotae = str(num)+" "+" ".join(list(map(str,triangle.values())))
print(kotae)

Python: num=0
t=0
e=0
d=0
for i in range(109):
    A=input()
    A=A.rstrip().split(" ")
    list1=[int(A[0]),int(A[1]),int(A[2])]
    list1.sort()
    if list1[2]>=list1[0]+list1[1]:
        break
    elif (list1[2])**2==(list1[0])**2+(list1[1])**2:
        num+=1
        t+=1
    elif (list1[2])**2>(list1[0])**2+(list1[1])**2:
        num+=1
        d+=1
    elif (list1[2])**2<(list1[0])**2+(list1[1])**2:
        num+=1
        e+=1
print(num,t,e,d)

Python: def run():
    judge = [0, 0, 0, 0]
    while True:
        a, b, c = sorted((int(x) for x in input().split()))
        print(a, b, c)
        if a + b <= c or min([a, b, c]) <= 0:
            print(' '.join(map(str, judge)))
            print()
            break
        else:
            S = a ** 2 + b ** 2 - c ** 2
            judge[0] += 1
            if S == 0:
                judge[1] += 1
            elif S > 0:
                judge[2] += 1
            else:
                judge[3] += 1





if __name__ == '__main__':
    run()

Python: t,x,y,z=0,0,0,0
while True:
    try:
        a=sorted(list(map(int,input().split())))
        if a[0]+a[1] > a[2]:
            t+=1
            if a[0]**2 + a[1]**2 == a[2]**2:
                x+=1
            elif a[0]**2 + a[1]**2 > a[2]**2:
                y+=1
            else:
                z+=1
        else:
            print( t, x, y, z )
            quit()
    except ValueError:
        break
print( t, x, y, z )

Python: A, B, C = 0, 0, 0  # A直角, B鋭角, C鈍角
while True:
	i = list(map(int, input().split()))
	i.sort()
	a, b, c = i[0], i[1], i[2]
	if c >= a + b:  # 三角形ではない
		break
	a2, b2, c2 = a ** 2, b ** 2, c ** 2
	if c2 == b2 + a2:  # 直角
		A = A + 1
	elif c2 < b2 + a2:  # 鈍角
		B = B + 1
	elif c2 > b2 + a2:  # 鋭角
		C = C + 1

print('{0} {1} {2} {3}'.format(A + B + C, A, B, C))

Python: ss = input()

Python: ans = [0 for i in range(4)]
while True:
  sides = sorted([int(inp) for inp in input().split()])
  if sides[2] >= sides[1] + sides[0]:
    print(ans[0], ans[1], ans[2], ans[3])
    break
  if sides[2]**2 > sides[1]**2 + sides[0]**2:
    ans[3]+=1
  elif sides[2]**2 == sides[1]**2 + sides[0]**2:
    ans[2]+=1
  else:
    ans[1]+=1
  ans[0]+=1

Python: f = True
cnt = 0
l = [0,0,0]
while f:
    t = [int(s) for s in input().split()]
    t.sort()
    if t[0]+t[1] <= t[2]:
        f = False
        continue
    if t[0]**2+t[1]**2 > t[2]**2:
        l[0]+=1
    elif t[0]**2+t[1]**2 == t[2]**2:
        l[1]+=1
    else:
        l[2]+=1
print(sum(l),[s for s in l])

Python: count = 0 #三角形の数
right = 0 #直角三角形の数
acute = 0 #鋭角三角形の数
obtuse = 0 #鈍角三角形の数
while True:
    try:
        n = input().split()
    except EOFError: #すべて三角形だった時のため(この問いでは不要)
        print(str(count) + " " + str(right) + " " + str(acute) + " " + str(obtuse))
        break
    m = [float(i) for i in n]
    m.sort() #三角形の各辺を小さい順にｍにリスト化
    MaxArgCos = (m[0] ** 2 + m[1] ** 2 - m[2] ** 2) / (2 * m[0] * m[1]) #三角形の最大角のcosを調べる
    count += 1 #三角形の数のカウント
    if -1 < MaxArgCos < 0:
        obtuse += 1 #鈍角
    elif 0 < MaxArgCos < 1:
        acute += 1 #鋭角
    elif MaxArgCos == 0:
        right += 1 #直角
    else:
        count -= 1 #三角形ではないのでカウントを減らす
        print(str(count) + " " + str(right) + " " + str(acute) + " " + str(obtuse))
        break

Python: result = [0] * 3
while 1:
    a = input()
#print(sum(result), *result)

Python: def check(lst):
  c, b, a = lst
  if a >= b + c:
    return -1
  elif a ** 2 > b ** 2 + c ** 2:
    return 3
  elif a ** 2 == b ** 2 + c ** 2:
    return 1
  else:
    return 2

dic = [0] * 4
while True:
  lst = list(map(int,input().split()))
  lst.sort()
  f = check(lst)
  if f == -1:
    print(" ".join(map(str,dic)))
    break
  dic[f] += 1
  dic[0] += 1