//==================================================================//
#define _CRT_SECURE_NO_WARNINGS
//==================================================================//
#include<bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

using namespace std;
#define sz(s)               (int)s.size()
#define clr(x,y)    memset(x,y,sizeof(x))
#define all(v) ((v).begin()), ((v).end())
#define RT(x)           return cout<<x,0;
#define endl                         '\n'
#define INF 0x3f3f3f3f3f3f3f3fLL
#define OO  0x3f3f3f3f
#define watch(x) cout<<#x<<" = { "<<x<<" }\n"
#define popcount(n) __builtin_popcount(n)
#pragma optimization_level 3
#define lft n<<1
#define ryt n<<1|1
#pragma GCC optimize("Ofast,no-stack-protector,fast-math,O3")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>

//==================================================================//

//==================================================================//
const int dx[] = { 0, 1, 0, -1, 1, 1, -1, -1 };
const int dy[] = { 1, 0, -1, 0, 1, -1, 1, -1 };
template<typename T>
using Graph = vector<vector<T>>;
typedef long long ll;
typedef unsigned long long ull;
//==================================================================//


//==================================================================//
void printDouble(double f, int p) {
	cout << fixed;
	cout << setprecision(p) << f << endl;
}
int  Set(int N, int cur) { return N = N | (1 << cur); }
int  Reset(int N, int cur) { return N = N & ~(1 << cur); }
bool Check(int N, int cur) { return (bool)(N & (1 << cur)); }
ll   GCD(ll a, ll b) { if (b == 0) return a; return GCD(b, a % b); }
ll   LCM(ll a, ll b) { return (a / GCD(a, b)) * b; }
ll   POW(ll a, ll p) {
	ll res = 1, x = a; while (p) {
		if (p & 1)
			res = (res * x); x = (x * x); p >>= 1;
	} return res;
}
//==================================================================//


//==================================================================//
void run() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
#else
		//freopen("restore.in", "r", stdin);
#endif
}
#define rep(i, n) for (int i = 0; i < (n); ++i)

//==================================================================//
const int N = 1e5 + 5, M = 40, mod = 1e9 + 7;

int main() {
	run();
	double x,y;
	cin>>x>>y;
	double ans = x-y;
	ans/=x;
	cout<<fixed<<setprecision(3);
	cout<<ans*100.0;


}

// Author: wlzhouzhuan
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pii pair<int, int>
#define pb push_back
#define fir first
#define sec second
#define rep(i, l, r) for (int i = l; i <= r; i++)
#define per(i, l, r) for (int i = l; i >= r; i--)
#define mset(s, t) memset(s, t, sizeof(s))
#define mcpy(s, t) memcpy(s, t, sizeof(t))
template<typename T1, typename T2> void ckmin(T1 &a, T2 b) { if (a > b) a = b; }
template<typename T1, typename T2> void ckmax(T1 &a, T2 b) { if (a < b) a = b; }
int read() {
  int x = 0, f = 0; char ch = getchar();
  while (!isdigit(ch)) f |= ch == '-', ch = getchar();
  while (isdigit(ch)) x = 10 * x + ch - '0', ch = getchar();
  return f ? -x : x;
}
template<typename T> void print(T x) {
  if (x < 0) putchar('-'), x = -x;
  if (x >= 10) print(x / 10);
  putchar(x % 10 + '0');
}
template<typename T> void print(T x, char let) {
  print(x), putchar(let);
}

vector<int> ans;

int main() {
  ans.pb(6), ans.pb(10), ans.pb(15);
  for (int i = 12; i <= 10000; i += 6) ans.pb(i);
  for (int i = 20; i <= 10000; i += 10) {
    if (i % 6 != 0) ans.pb(i);
  }
  for (int i = 30; i <= 10000; i += 15) {
    if (i % 6 != 0 && i % 10 != 0) {
      ans.pb(i);
    }
  }
  int n = read();
  for (int i = 0; i < n; i++) print(ans[i], ' ');
}