{"raw_statement":[{"iden":"statement","content":"Вы наверняка знаете, что при решении задач (особенно на олимпиадах по программированию) нужно выбирать целочисленные типы данных с умом. Если используемый тип имеет слишком малый размер, при выполнении арифметических операций может произойти переполнение, и тогда результат вычислений окажется неверным.\n\nМакс решает задачу, в которой требуется определить произведение целых чисел A и B. Любимый язык Макса — C++, а в этом языке самым ёмким целочисленным типом является long long — на компьютере Макса это 64-битное целое со знаком. 1 бит отводится на хранение знака числа, остальные 63 — на хранение самого числа; таким образом, максимальное значение, которое может иметь переменная типа long long, равно (263 - 1).\n\nВ своём решении Макс использовал long long везде, где только мог — для хранения чисел A, B и их произведения. Определите, действительно ли это поможет ему избежать переполнения.\n\nВвод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1)).\n\nВыведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO.\n\n"},{"iden":"входные данные","content":"Ввод содержит целые числа A и B (0 ≤ A, B ≤ (263 - 1))."},{"iden":"выходные данные","content":"Выведите YES, если при вычислении произведения (A·B) произойдёт переполнение типа long long. В противном случае выведите NO."},{"iden":"примеры","content":"Входные данные1000000000 1000000000Выходные данныеNOВходные данные10000000000 10000000000Выходные данныеYES"}],"translated_statement":null,"sample_group":[],"show_order":[],"formal_statement":"**Definitions**  \nLet $ n \\in \\mathbb{Z}_{\\geq 0} $ be the initial number of shares.  \nLet $ m \\in \\mathbb{Z}_{\\geq 1} $ be the number of time moments.  \nLet $ A = (a_1, a_2, \\dots, a_m) \\in \\mathbb{Z}_{\\geq 1}^m $ be the agent buy prices.  \nLet $ B = (b_1, b_2, \\dots, b_m) \\in \\mathbb{Z}_{\\geq 1}^m $ be the exchange buy prices.  \n\nLet $ s_t \\in \\mathbb{Z}_{\\geq 0} $ be the number of shares owned at time $ t \\in \\{0, 1, \\dots, m\\} $, with $ s_0 = n $.  \nLet $ c_t \\in \\mathbb{Z}_{\\geq 0} $ be the cash owned at time $ t $, with $ c_0 = 0 $.  \n\nAt each time $ t \\in \\{1, \\dots, m\\} $, one of three actions is taken:  \n- **Sell (A)**: $ s_t = 0 $, $ c_t = c_{t-1} + s_{t-1} \\cdot a_t $  \n- **Buy (B)**: $ s_t = s_{t-1} + \\left\\lfloor \\frac{c_{t-1}}{b_t} \\right\\rfloor $, $ c_t = c_{t-1} \\bmod b_t $  \n- **Hold (0)**: $ s_t = s_{t-1} $, $ c_t = c_{t-1} $  \n\n**Constraints**  \n1. $ 1 \\leq n \\leq 10^9 $, $ 1 \\leq m \\leq 5 \\times 10^5 $  \n2. $ 1 \\leq a_j, b_j \\leq 10^9 $ for all $ j \\in \\{1, \\dots, m\\} $  \n3. $ s_t \\leq 10^{18} $, $ c_t \\leq 10^{18} $ for all $ t \\in \\{0, \\dots, m\\} $  \n\n**Objective**  \nMaximize final cash:  \n$$\n\\max c_m\n$$  \nand output a sequence $ x_1, x_2, \\dots, x_m \\in \\{A, B, 0\\} $ achieving this maximum.","simple_statement":"Steve starts with n shares and no money.  \nEach day, he can:  \n- Sell all his shares to an agent for price a[i] per share,  \n- Buy as many shares as possible from the market for price b[i] per share (using all his money),  \n- Or do nothing.  \n\nAfter buying, any leftover money (less than one share’s price) is kept.  \n\nGoal: Maximize final money.  \nOutput:  \n1. The maximum money he can have.  \n2. A string of m characters: 'A' (sell), 'B' (buy), or '0' (do nothing).  \n\nAny optimal sequence is accepted.","has_page_source":false}