def check(x, A, B, C): return x * x * x + A * x * x + B * x + C >= 0 def strictCheck(x, A, B, C): return x * x * x + A * x * x + B * x + C == 0 ans = [] A, B, C = map(int, input().split()) imax = int(1e18) imin = -int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) imin = imax imax = int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) imin = imax imax = int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) imax = int(1e18) imin = -int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) imax = imax - 1 imin = -int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) imax = imax - 1 imin = -int(1e18) while(imax - imin > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) ans = sorted(list(set(ans))) if(len(ans) == 2): imax = ans[0] imin = ans[1] - 1 while(imin - imax > 1): imid = (imax+imin)//2 if(check(imid, A, B, C)): imax = imid else: imin = imid if(strictCheck(imax, A, B, C)): ans.append(imax) if(strictCheck(imin, A, B, C)): ans.append(imin) ans = sorted(list(set(ans))) print(ans[0], ans[1], ans[2])