Problem:
Simultaneous Equation

Write a program which solve a simultaneous equation:

ax + by = c

dx + ey = f

The program should print x and y for given a, b, c, d, e and f (-1,000 ≤ a, b, c, d, e, f ≤ 1,000). You can suppose that given equation has a unique solution.

Input

The input consists of several data sets, 1 line for each data set. In a data set, there will be a, b, c, d, e, f separated by a single space. The input terminates with EOF.

Output

For each data set, print x and y separated by a single space. Print the solution to three places of decimals. Round off the solution to three decimal places.

Sample Input 1

1 2 3 4 5 6
2 -1 -2 -1 -1 -5

Output for the Sample Input 1

-1.000 2.000
1.000 4.000

Sample Input 2

2 -1 -3 1 -1 -3
2 -1 -3 -9 9 27

Output for the Sample Input 2

0.000 3.000
0.000 3.000

Solution in JAVA (judge verdict: Memory Limit Exceeded)

import java.util.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigDecimal;
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        List<String> abcdefList = new ArrayList<>();
        String read = br.readLine();
        while (!"".equals(read)) {
            abcdefList.add(read);
            read = br.readLine();
        }
        br = null;
        List<String> result = new ArrayList<>();
        for (String abcdefStr : abcdefList) {
            String[] abcdef = abcdefStr.split(" ");
            double a = Double.parseDouble(abcdef[0]);
            double b = Double.parseDouble(abcdef[1]);
            double c = Double.parseDouble(abcdef[2]);
            // x=(bf-ce)/(bd-ae)
            BigDecimal x = new BigDecimal((getDouble(abcdef[1]) * getDouble(abcdef[5])
                    - getDouble(abcdef[2]) * getDouble(abcdef[4]))
                    / (getDouble(abcdef[1]) * getDouble(abcdef[3])
                            - getDouble(abcdef[0]) * getDouble(abcdef[4]))).setScale(3,
                                    BigDecimal.ROUND_HALF_UP);
            double xD = Double.parseDouble(x.toString());
            // y=(c-ax)/b
            BigDecimal y = new BigDecimal(
                    (getDouble(abcdef[2]) - getDouble(abcdef[0]) * xD) / getDouble(abcdef[1]))
                            .setScale(3, BigDecimal.ROUND_HALF_UP);
            result.add(x + " " + y);
        }
        abcdefList = null;
        for (String resultOut : result) {
            System.out.println(resultOut);
        }
    }

    private static double getDouble(String d) {
        return Double.parseDouble(d);
    }
}