import sys
from enum import Enum
class TringleSideTypes (Enum) :
Invalid = 0
Equilateral = 1
Isosceles = 2
Scalene = 3
class TringleAngleTypes (Enum) :
Invalid = 0
Right = 1
Obtuse = 2
Acute = 3
def tringleType(a, b, c) :
if c<a :
(a, c) = (c, a)
if c<b :
(c, b) = (b, c)
if b<a :
(b, a) = (a, b)
sideResult = TringleSideTypes.Invalid
angleResult = TringleAngleTypes.Invalid
if c >= a + b :
return sideResult, angleResult
epsilon = abs(b) * 2*sys.float_info.epsilon
if abs(a-b)<epsilon or abs(c-b)<epsilon :
sideResult = TringleSideTypes.Isosceles
if abs(a-c)<=epsilon :
sideResult = TringleSideTypes.Equilateral
angleResult = TringleAngleTypes.Acute
return sideResult, angleResult
else :
sideResult = TringleSideTypes.Scalene
pitagoras = a*a + b*b - c*c
epsilon = c*c * 6*sys.float_info.epsilon
if abs(pitagoras)<=epsilon :
angleResult = TringleAngleTypes.Right
else :
angleResult = (pitagoras>0) and TringleAngleTypes.Acute or TringleAngleTypes.Obtuse
return sideResult, angleResult
def brokenTringleType(a, b, c) :
if c<a :
(a, c) = (c, a)
if c<b :
(c, b) = (b, c)
if b<a :
(b, a) = (a, b)
sideResult = TringleSideTypes.Invalid
angleResult = TringleAngleTypes.Invalid
if c >= a + b :
return sideResult, angleResult
if a==b or c==b :
sideResult = TringleSideTypes.Isosceles
if a==c :
sideResult = TringleSideTypes.Equilateral
angleResult = TringleAngleTypes.Acute
return sideResult, angleResult
else :
sideResult = TringleSideTypes.Scalene
if a*a + b*b == c*c :
angleResult = TringleAngleTypes.Right
else :
angleResult = (a*a + b*b > c*c) and TringleAngleTypes.Acute or TringleAngleTypes.Obtuse
return sideResult, angleResult
for data in sys.stdin:
data = data.split()
a = float(data[0])
b = float(data[1])
c = float(data[2])
result = tringleType(a, b, c)
brokenResult = brokenTringleType(a, b, c)
if result[0]!=brokenResult[0] or result[1]!=brokenResult[1] :
print(a, b, c, result[0], result[1], brokenResult[0], brokenResult[1])
aW1wb3J0IHN5cwpmcm9tIGVudW0gaW1wb3J0IEVudW0KCmNsYXNzIFRyaW5nbGVTaWRlVHlwZXMgKEVudW0pIDoKCUludmFsaWQgPSAwCglFcXVpbGF0ZXJhbCA9IDEKCUlzb3NjZWxlcyA9IDIKCVNjYWxlbmUgPSAzCgpjbGFzcyBUcmluZ2xlQW5nbGVUeXBlcyAoRW51bSkgOgoJSW52YWxpZCA9IDAKCVJpZ2h0ID0gMQoJT2J0dXNlID0gMgoJQWN1dGUgPSAzCgpkZWYgdHJpbmdsZVR5cGUoYSwgYiwgYykgOgoJaWYgYzxhIDoKCQkoYSwgYykgPSAoYywgYSkKCWlmIGM8YiA6CgkJKGMsIGIpID0gKGIsIGMpCglpZiBiPGEgOgoJCShiLCBhKSA9IChhLCBiKQoKCXNpZGVSZXN1bHQgPSBUcmluZ2xlU2lkZVR5cGVzLkludmFsaWQKCWFuZ2xlUmVzdWx0ID0gVHJpbmdsZUFuZ2xlVHlwZXMuSW52YWxpZAoJaWYgYyA+PSBhICsgYiA6CgkJcmV0dXJuIHNpZGVSZXN1bHQsIGFuZ2xlUmVzdWx0CgoJZXBzaWxvbiA9IGFicyhiKSAqIDIqc3lzLmZsb2F0X2luZm8uZXBzaWxvbgoJaWYgYWJzKGEtYik8ZXBzaWxvbiBvciBhYnMoYy1iKTxlcHNpbG9uIDoKCQlzaWRlUmVzdWx0ID0gVHJpbmdsZVNpZGVUeXBlcy5Jc29zY2VsZXMKCQlpZiBhYnMoYS1jKTw9ZXBzaWxvbiA6CgkJCXNpZGVSZXN1bHQgPSBUcmluZ2xlU2lkZVR5cGVzLkVxdWlsYXRlcmFsCgkJCWFuZ2xlUmVzdWx0ID0gVHJpbmdsZUFuZ2xlVHlwZXMuQWN1dGUKCQkJcmV0dXJuIHNpZGVSZXN1bHQsIGFuZ2xlUmVzdWx0CgllbHNlIDoKCQlzaWRlUmVzdWx0ID0gVHJpbmdsZVNpZGVUeXBlcy5TY2FsZW5lCgoJcGl0YWdvcmFzID0gYSphICsgYipiIC0gYypjCgllcHNpbG9uID0gYypjICogNipzeXMuZmxvYXRfaW5mby5lcHNpbG9uCglpZiBhYnMocGl0YWdvcmFzKTw9ZXBzaWxvbiA6CgkJYW5nbGVSZXN1bHQgPSBUcmluZ2xlQW5nbGVUeXBlcy5SaWdodAoJZWxzZSA6CgkJYW5nbGVSZXN1bHQgPSAocGl0YWdvcmFzPjApIGFuZCBUcmluZ2xlQW5nbGVUeXBlcy5BY3V0ZSBvciBUcmluZ2xlQW5nbGVUeXBlcy5PYnR1c2UKCglyZXR1cm4gc2lkZVJlc3VsdCwgYW5nbGVSZXN1bHQKCmRlZiBicm9rZW5UcmluZ2xlVHlwZShhLCBiLCBjKSA6CglpZiBjPGEgOgoJCShhLCBjKSA9IChjLCBhKQoJaWYgYzxiIDoKCQkoYywgYikgPSAoYiwgYykKCWlmIGI8YSA6CgkJKGIsIGEpID0gKGEsIGIpCgoJc2lkZVJlc3VsdCA9IFRyaW5nbGVTaWRlVHlwZXMuSW52YWxpZAoJYW5nbGVSZXN1bHQgPSBUcmluZ2xlQW5nbGVUeXBlcy5JbnZhbGlkCglpZiBjID49IGEgKyBiIDoKCQlyZXR1cm4gc2lkZVJlc3VsdCwgYW5nbGVSZXN1bHQKCglpZiBhPT1iIG9yIGM9PWIgOgoJCXNpZGVSZXN1bHQgPSBUcmluZ2xlU2lkZVR5cGVzLklzb3NjZWxlcwoJCWlmIGE9PWMgOgoJCQlzaWRlUmVzdWx0ID0gVHJpbmdsZVNpZGVUeXBlcy5FcXVpbGF0ZXJhbAoJCQlhbmdsZVJlc3VsdCA9IFRyaW5nbGVBbmdsZVR5cGVzLkFjdXRlCgkJCXJldHVybiBzaWRlUmVzdWx0LCBhbmdsZVJlc3VsdAoJZWxzZSA6CgkJc2lkZVJlc3VsdCA9IFRyaW5nbGVTaWRlVHlwZXMuU2NhbGVuZQoKCWlmIGEqYSArIGIqYiA9PSBjKmMgOgoJCWFuZ2xlUmVzdWx0ID0gVHJpbmdsZUFuZ2xlVHlwZXMuUmlnaHQKCWVsc2UgOgoJCWFuZ2xlUmVzdWx0ID0gKGEqYSArIGIqYiA+IGMqYykgYW5kIFRyaW5nbGVBbmdsZVR5cGVzLkFjdXRlIG9yIFRyaW5nbGVBbmdsZVR5cGVzLk9idHVzZQoKCXJldHVybiBzaWRlUmVzdWx0LCBhbmdsZVJlc3VsdAoKCmZvciBkYXRhIGluIHN5cy5zdGRpbjoKCWRhdGEgPSBkYXRhLnNwbGl0KCkKCWEgPSBmbG9hdChkYXRhWzBdKQoJYiA9IGZsb2F0KGRhdGFbMV0pCgljID0gZmxvYXQoZGF0YVsyXSkKCXJlc3VsdCA9IHRyaW5nbGVUeXBlKGEsIGIsIGMpCglicm9rZW5SZXN1bHQgPSBicm9rZW5UcmluZ2xlVHlwZShhLCBiLCBjKQoJaWYgcmVzdWx0WzBdIT1icm9rZW5SZXN1bHRbMF0gb3IgcmVzdWx0WzFdIT1icm9rZW5SZXN1bHRbMV0gOgoJCXByaW50KGEsIGIsIGMsIHJlc3VsdFswXSwgcmVzdWx0WzFdLCBicm9rZW5SZXN1bHRbMF0sIGJyb2tlblJlc3VsdFsxXSkK