luogu#P5083. 函数

函数

题目描述

小奔有一个二元函数 f(a,b)f(a,b)

如果 a<2a<2b<2b<2 返回 a+ba+b

其他情况则返回以下四个式子的最大值(除号均为整除):

a+ba+b g(a/2)+g(a/3)+g(a/8)+g(a/9)+bg(a/2)+g(a/3)+g(a/8)+g(a/9)+b g(b/2)+g(b/3)+g(b/8)+g(b/9)+ag(b/2)+g(b/3)+g(b/8)+g(b/9)+a $$g(b/2)+g(b/3)+g(b/8)+g(b/9)+g(a/2)+g(a/3)+g(a/8)+g(a/9) $$

其中,g(n)g(n) 返回 max(g(n/2)+g(n/3)+g(n/8)+g(n/9),n)\max(g(n/2)+g(n/3)+g(n/8)+g(n/9),n),当 n=0n=0 时返回 00

当然,白痴都想得到可以记忆化求出较小的 f(a,b)f(a,b),所以小奔才不会考你那么简单的题呢。

他想问你当 a,ba,b 都小于 101610^{16} 时,f(a,b)f(a,b) 的值。

输入格式

包含多组数据。

每组数据,包含一行,两个正整数 a,ba,b

输出格式

每组数据输出一行,即 f(a,b)f(a,b) 的值。

5 6
1 1
1 223
11
2
224

提示

对于 40%40\% 的数据,a,b<107a,b<10^7

对于 70%70\% 的数据,时间限制 22 秒。

对于 100%100\% 的数据,a,b<1016a,b<10^{16}。数据组数不超过 10410^4 组。