#!/usr/bin/python3

#from __future__ import print_function

import sys, time
from ortools.constraint_solver import pywrapcp

def main(p):
  start_t=time.time()
  solver = pywrapcp.Solver("...")

  # declare variables
  a = solver.IntVar(0, 10000, "a")
  b = solver.IntVar(0, 10000, "b")
  c = solver.IntVar(0, 10000, "c")

  solver.Add(a>0)
  solver.Add(b>0)
  solver.Add(c>0)
  solver.Add(a>=b)
  solver.Add(c>=b)
  solver.Add(a*a + b*b == c*c)
  solver.Add(a+b+c == p)

  solution = solver.Assignment()

  db = solver.Phase([a,b,c], solver.CHOOSE_MIN_SIZE_LOWEST_MAX,
                    solver.ASSIGN_MIN_VALUE)

  solver.NewSearch(db)
  solutions = 0
  while solver.NextSolution():
    print("a, b, c", a.Value(), b.Value(), c.Value())
    solutions+=1
  solver.EndSearch()

  finish_t=time.time()
  print(f"{solutions=} {p=} seconds spent: {int(finish_t-start_t)}")
  return solutions

for p in range(1, 1000+1):
    main(p)

