func main() var p: int :: cui@inputInt() var q: int :: cui@inputInt() if(p = q) do cui@print("1\n2 2\n") ret end if var gcd: int :: math@gcd(p, q) do p :/ gcd do q :/ gcd ; n = a * c ; m = b * c ; p = a + b ; q = a * b * c var ansNM: []NM :: #[0]NM for a(1, p - 1) var b: int :: p - a if(a * b > q) break a end if if(q % (a * b) = 0) var c: int :: q / (a * b) var n: int :: a * c var m: int :: b * c do ansNM :~ [(#NM).init(n, m)] end if end for do cui@print("\{^ansNM}\n") for i(0, ^ansNM - 1) var n: int :: ansNM[i].n var m: int :: ansNM[i].m do cui@print("\{n} \{m}\n") end for class NM() +var n: int +var m: int +func init(n: int, m: int): NM do me.n :: n do me.m :: m ret me end func +*func cmp(t: kuin@Class): int if(me.n < (t $ NM).n) ret -1 elif(me.n > (t $ NM).n) ret 1 end if ret 0 end func end class end func