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 C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;

namespace AOJ.Volume0
{
    class Program0004
    {
        static void Main(string[] args)
        {
            const int N = 6;
            string input;
            Queue<double[]> queue = new Queue<double[]>();

            while ((input = Console.ReadLine()) != null)
            {
                string[] splitedInput = input.Split(' ');
                double[,] param = new double[2,3];

                for (int i = 0; i < 2; i++)
                {
                    for (int j = 0; j < 3; j++)
                    {
                        param[i, j] = double.Parse(splitedInput[i * 3 + j]);
                    }
                }

                queue.Enqueue(SolveEquation(param));
            }

            foreach (var ans in queue)
            {
                Console.WriteLine("{0:#####0.000} {1:#####0.000}", ans[0], ans[1]);
            }
        }

        static double[] SolveEquation(double[,] parameters)
        {
            double x, y;
            double a = parameters[1, 0] / parameters[0, 0];

            for (int i = 0; i < 3; i++)
            {
                parameters[1, i] -= parameters[0, i] * a;
            }

            y = parameters[1, 2] / parameters[1, 1];
            x = (parameters[0, 2] - parameters[0, 1] * y) / parameters[0, 0];

            return new[] { x, y };
        }
    }
}