import math
def find(n):
# max of x can be sqrt of n
n1 = int(math.ceil(math.sqrt(n)))
lst = set()
for i in range(1, n1):
for j in range(i + 1, n1):
if i**2 + j**2 >= n:
break
tz = int(math.sqrt(n - i**2 - j**2))
if tz ** 2 == n - i**2 - j**2:
#This if-block makes the elements in tuple, sorted.
#so that set can compare two values for equality
#because (1, 2, 3) != (2, 3, 1)
if tz < i:
i, j, tz = tz, i, j
elif tz < j:
j, tz = tz, j
a = (i, j, tz)
lst.add(a)
return lst
print find(2134)
aW1wb3J0IG1hdGgKCgpkZWYgZmluZChuKToKICAgICMgbWF4IG9mIHggY2FuIGJlIHNxcnQgb2YgbgogICAgbjEgPSBpbnQobWF0aC5jZWlsKG1hdGguc3FydChuKSkpCiAgICBsc3QgPSBzZXQoKQogICAgZm9yIGkgaW4gcmFuZ2UoMSwgbjEpOgogICAgICAgIGZvciBqIGluIHJhbmdlKGkgKyAxLCBuMSk6CgogICAgICAgICAgICBpZiBpKioyICsgaioqMiA+PSBuOgogICAgICAgICAgICAgICAgYnJlYWsKCiAgICAgICAgICAgIHR6ID0gaW50KG1hdGguc3FydChuIC0gaSoqMiAtIGoqKjIpKQogICAgICAgICAgICBpZiB0eiAqKiAyID09IG4gLSBpKioyIC0gaioqMjoKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgI1RoaXMgaWYtYmxvY2sgbWFrZXMgdGhlIGVsZW1lbnRzIGluIHR1cGxlLCBzb3J0ZWQuCiAgICAgICAgICAgICAgICAjc28gdGhhdCBzZXQgY2FuIGNvbXBhcmUgdHdvIHZhbHVlcyBmb3IgZXF1YWxpdHkKICAgICAgICAgICAgICAgICNiZWNhdXNlICgxLCAyLCAzKSAhPSAoMiwgMywgMSkKICAgICAgICAgICAgICAgIGlmIHR6IDwgaToKICAgICAgICAgICAgICAgICAgICBpLCBqLCB0eiA9IHR6LCBpLCBqCiAgICAgICAgICAgICAgICBlbGlmIHR6IDwgajoKICAgICAgICAgICAgICAgICAgICBqLCB0eiA9IHR6LCBqCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGEgPSAoaSwgaiwgdHopCiAgICAgICAgICAgICAgICBsc3QuYWRkKGEpCiAgICByZXR1cm4gbHN0CgpwcmludCBmaW5kKDIxMzQpCg==
set([(3, 10, 45), (3, 19, 42), (3, 30, 35), (3, 3, 46), (6, 27, 37), (9, 17, 42), (17, 18, 39), (18, 21, 37), (26, 27, 27)])