Problem: A group of n merry programmers celebrate Robert Floyd's birthday. Polucarpus has got an honourable task of pouring Ber-Cola to everybody. Pouring the same amount of Ber-Cola to everybody is really important. In other words, the drink's volume in each of the n mugs must be the same.

Polycarpus has already began the process and he partially emptied the Ber-Cola bottle. Now the first mug has a1 milliliters of the drink, the second one has a2 milliliters and so on. The bottle has b milliliters left and Polycarpus plans to pour them into the mugs so that the main equation was fulfilled.

Write a program that would determine what volume of the drink Polycarpus needs to add into each mug to ensure that the following two conditions were fulfilled simultaneously: 

  * there were b milliliters poured in total. That is, the bottle need to be emptied; 
  * after the process is over, the volumes of the drink in the mugs should be equal. 

Input

The first line contains a pair of integers n, b (2 ≤ n ≤ 100, 1 ≤ b ≤ 100), where n is the total number of friends in the group and b is the current volume of drink in the bottle. The second line contains a sequence of integers a1, a2, ..., an (0 ≤ ai ≤ 100), where ai is the current volume of drink in the i-th mug.

Output

Print a single number "-1" (without the quotes), if there is no solution. Otherwise, print n float numbers c1, c2, ..., cn, where ci is the volume of the drink to add in the i-th mug. Print the numbers with no less than 6 digits after the decimal point, print each ci on a single line. Polycarpus proved that if a solution exists then it is unique.

Russian locale is installed by default on the testing computer. Make sure that your solution use the point to separate the integer part of a real number from the decimal, not a comma.

Examples

Input

5 50
1 2 3 4 5


Output

12.000000
11.000000
10.000000
9.000000
8.000000


Input

2 2
1 100


Output

-1

Solution (in JAVA):

Solution:
import java.math.BigInteger;
import java.util.*;
import java.lang.Math;

public class Codeforces {

    public static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        int n = scanner.nextInt();
        double b = scanner.nextDouble();
        int[] array = new int[n];
        int max = 0;
        for (int i = 0; i < n; i++) {
            array[i] = scanner.nextInt();
            if (array[i] > max) {
                max = array[i];
            }
        }
        double[] outArray = new double[n];
        for (int i = 0; i < n; i++) {
            if (array[i] != max) {
                outArray[i] = max - array[i];
                b -= outArray[i];
                if (b < 0) {
                    System.out.println(-1);
                    return;
                }
            }
        }

        for (double v : outArray) {
            System.out.printf("%.6f", v + b / (double) n);
            System.out.println();
        }
    }

    public static int binarySearchMod(int arr[], int first, int last, int key) {
        if (arr.length == 1) {
            if (arr[0] <= key) {
                return 1;
            }
            return 0;
        }
        if (arr[0] <= key && arr[1] > key) {
            return 1;
        }
        if (arr[0] > key) {
            return 0;
        }
        if (arr[arr.length - 1] <= key) {
            return arr.length;
        }

        while (true) {
            int mid = (first + last) / 2;
            if (mid + 1 == arr.length) {
                return mid;
            }
            if (arr[mid] <= key && arr[mid + 1] > key) {
                return mid + 1;
            }
            if (arr[mid] > key) {
                last = mid;
                continue;
            }
            if (arr[mid] <= key) {
                first = mid;
            }
        }
    }

    public static BigInteger printFibonacciWithoutArrays(int n) {
        if (n == 0) {
            return BigInteger.ZERO;
        }
        if (n == 1) {
            return BigInteger.ONE;
        }
        BigInteger prevOfPrev = BigInteger.ZERO;
        BigInteger prev = BigInteger.ONE;
        BigInteger now = BigInteger.ZERO;
        for (int i = 2; i <= n; i++) {
            now = prevOfPrev.add(prev);
            prevOfPrev = prev;
            prev = now;
        }
        return now;

    }

    public static int[] mergeArrays(int[] a1, int[] a2) {
        if (a1.length == 0 && a2.length == 0) {
            return new int[]{};
        }
        if (a1.length == 0) {
            return a2;
        }
        if (a2.length == 0) {
            return a1;
        }

        int[] array = new int[a1.length + a2.length];
        int t1 = 0;
        int t2 = 0;
        for (int i = 0; i < array.length; i++) {
            if (a1.length <= t1) {
                array[i] = a2[t2++];
                continue;
            }
            if (a2.length <= t2) {
                array[i] = a1[t1++];
                continue;
            }

            if (a1[t1] >= a2[t2]) {
                array[i] = a2[t2++];
            } else {
                array[i] = a1[t1++];
            }
        }
        return array;
    }

    public static BigInteger factorial(int value) {
        BigInteger bigInteger = new BigInteger(String.valueOf(1));
        for (int i = 2; i <= value; i++) {
            bigInteger = bigInteger.multiply(BigInteger.valueOf(i));
        }
        return bigInteger;
    }

    public static void checkPalindrome(String s) {
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isAlphabetic(s.charAt(i)) || Character.isDigit(s.charAt(i))) {
                str.append(Character.toLowerCase(s.charAt(i)));
            }
        }
        for (int i = 0; i < str.length() / 2; i++) {
            if (str.charAt(i) != str.charAt(str.length() - i - 1)) {
                System.out.println("no");
                return;
            }
        }
        System.out.println("yes");
    }

    public static void checkSortArrayLength(int[] array) {
        int cnt = 1;
        int max = 1;
        for (int i = 0; i < array.length - 1; i++) {
            if (array[i + 1] >= array[i]) {
                cnt++;
            } else {
                cnt = 0;
            }
            if (cnt > max) {
                max = cnt;
            }
        }
        System.out.println(max);
    }

    public static boolean isPowerOfTwo(long value) {
        if (value <= 0) {
            return false;
        }
        return (value & (value) - 1) == 0;
    }

    public static boolean isPrime(int k) {
        if (k % 2 == 0) {
            return false;
        }
        for (int i = 3; i <= Math.sqrt(k); i += 2) {
            if (k % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static int fact(int a) {
        int s = 1;
        for (int i = 2; i <= a; i++) {
            s *= i;
        }
        return s;
    }

    public static void selectionSort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int index = i;
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[index]) {
                    index = j;
                }
            }
            swap(arr, index, i);
        }
    }

    public static void swap(int[] array, int i, int j) {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    public static void swap(int[][] array, int i, int j) {
        int[] temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
}