Problem: Aoki is in search of Takahashi, who is missing in a one-dimentional world. Initially, the coordinate of Aoki is 0, and the coordinate of Takahashi is known to be x, but his coordinate afterwards cannot be known to Aoki.

Time is divided into turns. In each turn, Aoki and Takahashi take the following actions simultaneously:

* Let the current coordinate of Aoki be a, then Aoki moves to a coordinate he selects from a-1, a and a+1.

* Let the current coordinate of Takahashi be b, then Takahashi moves to the coordinate b-1 with probability of p percent, and moves to the coordinate b+1 with probability of 100-p percent.




When the coordinates of Aoki and Takahashi coincide, Aoki can find Takahashi. When they pass by each other, Aoki cannot find Takahashi.

Aoki wants to minimize the expected number of turns taken until he finds Takahashi. Find the minimum possible expected number of turns.

Constraints

* 1 ≦ x ≦ 1,000,000,000
* 1 ≦ p ≦ 100
* x and p are integers.

Input

The input is given from Standard Input in the following format:


x
p


Output

Print the minimum possible expected number of turns. The output is considered correct if the absolute or relative error is at most 10^{-6}.

Examples

Input

3
100


Output

2.0000000


Input

6
40


Output

7.5000000


Input

101
80


Output

63.7500000

Solution (in CPP):

Solution:
#pragma region include
#include <iostream>
#include <iomanip>
#include <stdio.h>

#include <sstream>
#include <algorithm>
#include <iterator>
#include <cmath>
#include <complex>

#include <string>
#include <cstring>
#include <vector>
#include <tuple>
#include <bitset>

#include <queue>
#include <complex>
#include <set>
#include <map>
#include <stack>
#include <list>

#include <fstream>
#include <random>
//#include <time.h>
#include <ctime>
#pragma endregion //#include
/////////
#define REP(i, x, n) for(int i = x; i < n; ++i)
#define rep(i,n) REP(i,0,n)
#define ALL(X) X.begin(), X.end()
/////////
#pragma region typedef
typedef long long LL;
typedef long double LD;
typedef unsigned long long ULL;
typedef std::pair<LL,LL> PLL;//
typedef std::pair<int,int> PII;//
#pragma endregion //typedef
////定数
const int INF = (int)1e9;
const LL MOD = (LL)1e9+7;
const LL LINF = (LL)1e18+20;
const LD PI = acos(-1.0);
const double EPS = 1e-9;
/////////
using namespace::std;

void solve(){
	int X;
	double P;
	cin >> X >> P;
	if( P == 100 ){
		double ans = (X+1)/2;
		cout << ans << endl;
		return;
	}
	if( X <= 10 ){
		double p = P/100;
		double q = 1-p;
		if( X%2 == 0 ){//Xが偶数
			vector<double> dp(X+10,0);
			dp[0] = 0.0;//距離が0の時の期待値
			int now = 0;
			for(;now<X;now += 2 ){
				dp[now+2] = dp[now] + 1.0/p;
			}
			double ans = dp[X];
			cout << ans << endl;
			return;
		}else{//距離Xが奇数
			vector<double> dp(X+20,0);
			dp[0] = 0.0;
			int now = 0;
			for(;now<X+4; now += 2 ){
				dp[now+2] = dp[now] + 1.0/p;
			}
			double ans = dp[X-1]*p + dp[X+1]*q + 1.0;/////
			cout << ans << endl;
			return;
		}
		return;
	}
	if( X&1 ){//奇数
		double p = P/100;
		double q = 1-p;
		double cnt1 = (X-1)/2;
		double cnt2 = (X+1)/2;
		double res1 = (1.0/p) * cnt1;
		double res2 = (1.0/p) * cnt2; 
		double ans = res1 * p + res2 * q + 1.0;
		cout << ans << endl;
	}else{//偶数
		double p = P/100;
		double q = 1-p;
		double cnt = X/2;//cnt回pを引き当てる。
		//pを1回引くまでの、試行回数の期待値は1/p
		double ans = (1.0/p) * cnt;
		cout << ans << endl;
	}
}

#pragma region main
signed main(void){
	std::cin.tie(0);
	std::ios::sync_with_stdio(false);
	std::cout << std::fixed;//小数を10進数表示
	cout << setprecision(16);//小数点以下の桁数を指定//coutとcerrで別	

	solve();
}
#pragma endregion //main()