Problem: Igor the analyst has adopted n little bunnies. As we all know, bunnies love carrots. Thus, Igor has bought a carrot to be shared between his bunnies. Igor wants to treat all the bunnies equally, and thus he wants to cut the carrot into n pieces of equal area. 

Formally, the carrot can be viewed as an isosceles triangle with base length equal to 1 and height equal to h. Igor wants to make n - 1 cuts parallel to the base to cut the carrot into n pieces. He wants to make sure that all n pieces have the same area. Can you help Igor determine where to cut the carrot so that each piece have equal area?

<image> Illustration to the first example.

Input

The first and only line of input contains two space-separated integers, n and h (2 ≤ n ≤ 1000, 1 ≤ h ≤ 105).

Output

The output should contain n - 1 real numbers x1, x2, ..., xn - 1. The number xi denotes that the i-th cut must be made xi units away from the apex of the carrot. In addition, 0 < x1 < x2 < ... < xn - 1 < h must hold. 

Your output will be considered correct if absolute or relative error of every number in your output doesn't exceed 10 - 6.

Formally, let your answer be a, and the jury's answer be b. Your answer is considered correct if <image>.

Examples

Input

3 2


Output

1.154700538379 1.632993161855


Input

2 100000


Output

70710.678118654752

Note

Definition of isosceles triangle: <https://en.wikipedia.org/wiki/Isosceles_triangle>.

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
long long mod = 1e9 + 7;
long long INF = 1e7;
double EPS = 1e-12;
double tick() {
  static clock_t oldt;
  clock_t newt = clock();
  double diff = 1.0 * (newt - oldt) / CLOCKS_PER_SEC;
  oldt = newt;
  return diff;
}
long long int powP(long long int a, long long int b) {
  if (b == 0) return 1 % mod;
  long long int k;
  k = powP(a, b / 2);
  k = k * k % mod;
  if (b % 2 == 0)
    return k;
  else
    return a * k % mod;
}
bool bitSet(long long int n, long long int i) {
  if ((n & (1LL << i)) != 0)
    return true;
  else
    return false;
}
long long int findGcd(long long int a, long long int b) {
  if (a == 0)
    return b;
  else
    return findGcd(b % a, a);
}
long long int A[500010], B[500010];
double Result[500010];
int main() {
  double T, i, m, n, p, j, l, e, r, b, c, k, q, a, d, w, x, y, v, z, t, curr,
      prev, sum, ans, pos, val, countA, indicator;
  double h;
  scanf("%lf%lf", &n, &h);
  double base = 1;
  double tot, req, remain;
  tot = h / 2;
  req = tot / n;
  EPS = 1e-9;
  for (long long int i = (1); i <= (n - 1); ++i) {
    double low = EPS, high = h, mid;
    while (low <= high + EPS) {
      mid = (low + high) / 2;
      curr = base / h * mid;
      remain = (h * base - curr * mid) / 2;
      if (remain <= req + EPS && remain >= req - EPS) {
        ans = mid;
        break;
      } else if (remain >= req + EPS)
        low = mid;
      else
        high = mid;
    }
    Result[i] = mid;
    base = base / h * mid;
    h = mid;
  }
  for (long long int i = (n - 1); i >= (1); --i) printf("%0.9lf ", Result[i]);
  return 0;
}