using System;
using System.Linq;
using System.Collections.Generic;
using System.Numerics;
namespace Atcoder20190616
{
class ProgramA
{
static void Main(string args)
{
//入力
string input = Console.ReadLine().Split(' ');
int n = int.Parse(input[0]);
int r = int.Parse(input[1]);
//試行回数が10回以下ならレートを補正する。それ以外は普通に出力
if(n < 10)
Console.WriteLine(r + (10 -n)*100);
else
Console.WriteLine(r);
}
}
class ProgramB
{
static void Main(string args)
{
//入力
string input = Console.ReadLine().Split(' ');
int n = int.Parse(input[0]);
int k = int.Parse(input[1]);
int count = 0;
//0なるまで何回割れるか求める
while(n != 0)
{
n /= k;
count++;
}
Console.WriteLine(count);
}
}
class ProgramC
{
static void Main(string args)
{
//入力
int n = int.Parse(Console.ReadLine());
string input = Console.ReadLine().Split(' ');
int sum = 0;
int ans = 100000000;
//すべての和を求める
for(int i = 0;i < 100;i++)
{
for(int j = 0;j < n ;j++)
{
int temp = int.Parse(input[j]);
sum += (temp - i)*(temp -i);
}
//その和が最小なら更新する
if(sum < ans)
ans = sum;
//リセット
sum = 0;
}
//答え出力
Console.WriteLine(ans);
}
}
class ProgramD
{
static void Main(string args)
{
//入力
string input = Console.ReadLine().Split(' ');
long n = long.Parse(input[0]);
long a = long.Parse(input[1]);
long b = long.Parse(input[2]);
long MOD = 1000000000 + 7;
//まずは総和を計算
//BigIntegerを使う方法
BigInteger temp10 = System.Numerics.BigInteger.ModPow(2, n, MOD);
long ans = (long)temp10;
if(n/2 < a)
a = n - a;
if(n/2 < b)
b = n - b;
long a_sum = 1;
long b_sum = 1;
//分子の方をかける
for(long i = 0;i < a;i++)
{
a_sum *= n - i;
a_sum %= MOD;
}
//分母の方を割る
for(long i = 0;i < a;i++)
{
a_sum = a_sum * modinv(i + 1,MOD) % MOD;
}
//分子の方をかける
for(long i = 0;i < b;i++)
{
b_sum *= n - i;
b_sum %= MOD;
}
//分母の方を割る
for(long i = 0;i < b;i++)
{
b_sum = b_sum * modinv(i + 1,MOD) % MOD;
}
//最初の数からa,bのケースを引く
ans -= a_sum;
ans -= b_sum;
ans -= 1;
//最後に割る
ans %= MOD;
//負のときは絶対値を戻す
if(ans < 0)
ans = MOD - Math.Abs(ans);
//出力
Console.WriteLine(ans);
}
//繰り返し二乗法で求める
static long modpow(long a, long n,long MOD)
{
if(n == 0)
return 1;
if(n % 2 == 0)
{
long temp = modpow(a, n/2, M);
return temp*temp % MOD;
}
return a * modpow(a,n-1,MOD);
}
// mod. m での a の逆元 a^{-1} を計算する
static long modinv(long a, long m)
{
long b = m, u = 1, v = 0;
while (b > 0)
{
//こちらは普通のユークリッドの互除法
long t = a / b;
a -= t * b;
var temp = a;
a = b;
b = temp;
//こっちは逆算すると解が出る
u -= t * v;
var temp2 = u;
u = v;
v = temp2;
}
u %= m;
if (u < 0)
u += m;
return u;
}
}
class ProgramD:part2
{
static void Main(string args)
{
//入力
string input = Console.ReadLine().Split(' ');
long n = long.Parse(input[0]);
long a = long.Parse(input[1]);
long b = long.Parse(input[2]);
long MOD = 1000000000 + 7;
//まずは総和を計算
//繰り返し二乗法を使う方法
long ans = modpow(2,n,MOD);
if(n/2 < a)
a = n - a;
if(n/2 < b)
b = n - b;
long a_sum = 1;
long b_sum = 1;
long a_sum_u = 1;
long b_sum_u = 1;
//分子の方をかける
for(long i = 0;i < a;i++)
{
a_sum *= n - i;
a_sum %= MOD;
}
//分母の方をかける
for(long i = 0;i < a;i++)
{
a_sum_u *= (i + 1);
a_sum_u %= MOD;
}
//nCaを求める
a_sum = a_sum * modpow(a_sum_u,MOD-2,MOD);
//分子の方をかける
for(long i = 0;i < b;i++)
{
b_sum *= n - i;
b_sum %= MOD;
}
//分母の方をかける
for(long i = 0;i < b;i++)
{
b_sum_u *= (i + 1);
b_sum_u %= MOD;
}
//nCbを求める
b_sum = b_sum * modpow(b_sum_u,MOD-2,MOD);
//最初の数からa,bのケースを引く
ans -= a_sum;
ans -= b_sum;
ans -= 1;
//最後に割る
ans %= MOD;
//負のときは絶対値を戻す
if(ans < 0)
ans = MOD - Math.Abs(ans);
//出力
Console.WriteLine(ans);
}
//繰り返し二乗法で求める
static long modpow(long a, long n,long MOD)
{
if(n == 0)
return 1;
if(n % 2 == 0)
{
long temp = modpow(a, n/2, MOD);
return temp*temp % MOD;
}
return a * modpow(a,n-1,MOD) % MOD;
}
}
class ProgramE
{
static void Main(string args)
{
//入力
string input = Console.ReadLine().Split(' ');
long n = long.Parse(input[0]);
long k = long.Parse(input[1]);
long MOD = 1000000000 + 7;
long sum = 0;
//下準備
nCk com = new nCk();
com.fac = new long[n + 1];
com.inv = new long[n + 1];
com.finv = new long[n + 1];
com.mod = MOD;
com.max = n + 1;
//メモ作成
com.com_init();
//最大の部屋の数を考える
long m = n;
if(n > k)
m = k + 1;
//nCm×n-mHm = nCm×n-1Cn-m-1の和を出す
for(long i = 0;i < m;i++)
{
sum += com.com(n, i) * com.com(n - 1, n - i - 1) % MOD;
sum %= MOD;
}
//出力
Console.WriteLine(sum);
}
}
class nCk
{
public long mod;
public long max;
public long fac;
public long inv;
public long[] finv;
//メモ作成(前準備)
public void com_init()
{
fac[0] = 1;
fac[1] = 1;
finv[0] = 1;
finv[1] = 1;
inv[1] = 1;
for(long i = 2;i < max;i++)
{
fac[i] = i * fac[i - 1] % mod;
inv[i] = mod - inv[mod % i] * (mod / i) % mod;
finv[i] = finv[i - 1] * inv[i] % mod;
}
}
//二項計算
public long com(long n,long k)
{
if (n < 0 || k < 0)
return 0;
if (n < k)
return 0;
return fac[n] * (finv[n - k] * finv[k] % mod) % mod;
}
}
}