## https://yukicoder.me/problems/no/3312 from collections import deque def solve(R, B, value): array = [B, R] array.sort(reverse=True) for i in reversed(range(1, value + 1)): if array[0] >= i ** 2: array[0] -= i ** 2 else: return False array.sort(reverse=True) return True def main(): R, B = map(int, input().split()) def f(k): y = k * (k + 1) * (2 * k + 1) return y // 6 x = R + B k = 1 while f(k) <= x: k += 1 max_k = k low = 0 high = max_k while high - low > 1: mid = (high + low) // 2 if solve(R, B, mid): low = mid else: high = mid if solve(R, B, high): print(high) else: print(low) if __name__ == "__main__": main()