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 JAVA):

Solution:
import javafx.util.Pair;

import static java.lang.Double.parseDouble;
import static java.lang.Integer.max;
import static java.lang.Integer.min;
import static java.lang.Integer.parseInt;
import static java.lang.Long.parseLong;
import static java.lang.StrictMath.abs;
import static java.lang.System.exit;
import static java.util.Arrays.sort;
import java.io.*;
import java.math.BigInteger;
import java.util.*;


public class A {

    static BufferedReader in;
    static PrintWriter out;
    static StringTokenizer tok;
    static boolean stream = true;


    static void solve() throws Exception {

        int n = nextInt(),h = nextInt();
        double air = h * 0.5;
        double piece = air / n;
        for(int i = 1;i<n;i++) {
            out.print(String.format( "%.9f ", Math.sqrt(  2 * piece * i * h ) ));
        }
    }

    public static int lower_bound(ArrayList<Integer> a, int v) {
        int low = -1, high = a.size();
        while(high-low > 1){
            int h = high+low>>>1;
            if(a.get(h) >= v){
                high = h;
            }else{
                low = h;
            }
        }
        return high;
    }


    public static int upper_bound(int[] a, int v) {
        int low = -1, high = a.length;
        while(high-low > 1){
            int h = high+low>>>1;
            if(a[h] > v){
                high = h;
            }else{
                low = h;
            }
        }
        return high;
    }

    static int gcd(int a, int b) { return b==0 ? a : gcd(b, a%b); }


    static int nextInt() throws IOException {
        return parseInt(next());
    }

    static long nextLong() throws IOException {
        return parseLong(next());
    }

    static double nextDouble() throws IOException {
        return parseDouble(next());
    }

    static String next() throws IOException {
        while (tok == null || !tok.hasMoreTokens()) {
            tok = new StringTokenizer(in.readLine());
        }
        return tok.nextToken();
    }

    public static void main(String[] args) {
        try {
            if(stream) {
                in = new BufferedReader(new InputStreamReader(System.in));
                out = new PrintWriter(new OutputStreamWriter(System.out));
            } else {
                in = new BufferedReader(new FileReader("/Users/abdelnacer/Downloads/A-small-practice.in"));
                out = new PrintWriter(new BufferedWriter(new FileWriter("/Users/abdelnacer/Downloads/A-small-practice.out")));
            }

            solve();
            long lEndTime = System.currentTimeMillis();
            //System.out.println("Elapsed time in seconds: " + (double)(lEndTime - lStartTime) / 1000.0);
            in.close();
            out.close();
        } catch (Throwable e) {
            e.printStackTrace();
            exit(1);
        }
    }
}