#include <bits/stdc++.h>
using namespace std;
char local = 'O';
template <typename T>
void read(T &p) {
  cin >> p;
}
template <typename T, typename T1>
void read(pair<T, T1> &p) {
  read(p.first);
  read(p.second);
}
template <typename T>
void read(T arr[], long long n) {
  for (long long i = 0; i < n; i++) {
    read(arr[i]);
  }
}
template <typename T>
void read(vector<T> &arr) {
  for (long long i = 0; i < arr.size(); i++) {
    read(arr[i]);
  }
}
template <typename T>
void out(T &n) {
  cout << n;
}
template <typename T, typename T1>
void out(pair<T, T1> &p) {
  cout << "(";
  out(p.first);
  cout << ",";
  out(p.second);
  cout << ")";
}
template <typename T>
void out(T arr[], long long n) {
  for (long long i = 0; i < n; i++) {
    out(arr[i]);
    cout << " ";
  }
}
template <typename T>
void out(vector<T> &arr) {
  for (long long i = 0; i < arr.size(); i++) {
    out(arr[i]);
    cout << " ";
  }
}
template <typename T>
void out(set<T> &arr) {
  for (auto i : arr) {
    out(i);
    cout << " ";
  }
}
template <typename T>
void out(multiset<T> &arr) {
  for (auto i : arr) {
    out(i);
    cout << " ";
  }
}
template <typename T, typename T1>
void out(map<T, T1> &m) {
  for (auto i : m) {
    out(i.first);
    cout << " -> ";
    out(i.second);
    cout << ", ";
  }
}
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
  cout << name << " : ";
  out(arg1);
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cout.write(names, comma - names) << " : ";
  out(arg1);
  cout << " | ";
  __f(comma + 1, args...);
}
template <class T>
void debug(T n, string a) {
  cout << a << "=" << n << "\n";
}
void cal() {}
void solve() {
  int n, h;
  cin >> n >> h;
  for (int i = 1; i < n; i++) {
    cout << fixed << setprecision(15) << (sqrt(i / (n * 1.0)) * h) << ' ';
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long t1;
  t1 = 1;
  cal();
  while (t1--) {
    solve();
  }
}
