Problem: As I was cleaning up the warehouse, I found an old document that describes how to get to the treasures of my ancestors. The following was written in this ancient document.


1. First, stand 1m east of the well on the outskirts of the town and turn straight toward the well.
2. Turn clockwise 90 degrees, go straight for 1m, and turn straight toward the well.
3. Turn clockwise 90 degrees, go straight for 1m, and turn straight toward the well.
Four.                   〃
Five.                   〃
6::


From the second line onward, exactly the same thing was written. You wanted to find the treasure, but found it awkward. Unlike in the past, the building is in the way, and you can't see the well even if you go straight in the direction of the well, or you can't go straight even if you try to go straight for 1m. In addition, this ancient document has nearly 1000 lines, and it takes a considerable amount of time and physical strength to work according to the ancient document. Fortunately, however, you can take advantage of your computer.

Enter the number of lines n written in the old document and create a program that outputs the location of the treasure. However, n is a positive integer between 2 and 1,000.



input

Given multiple datasets. For each dataset, one integer n, which represents the number of lines in the old document, is given on each line.

The input ends with -1. The number of datasets does not exceed 50.

output

Assuming that there is a treasure at the position x (m) to the east and y (m) to the north from the well on the outskirts of the town, output each data set in the following format.


x
y


The output is a real number and may contain an error of 0.01 or less.

Example

Input

3
6
-1


Output

0.29
1.71
-2.31
0.80

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;


public class Main {
	private	static	BufferedReader br = null;

	static {
		br = new BufferedReader(new InputStreamReader(System.in));
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Integer>	point   = new ArrayList<Integer>();
		double[][]			tresure = new double[1000][2];
		double				angle   = 0.0;
		int					num     = 0;
		int					max     = 0;

		tresure[0][0] = 1.0;
		tresure[0][1] = 1.0;//0.0;
		while ((num = parseNum()) != -1) {
			point.add(num);
			max = Math.max(max, num);
		}

		tresure[1][0] = 1.0;
		tresure[1][1] = 1.0;
		for(int n = 2; n < max; n++) {
			angle = Math.atan2(-tresure[n - 1][1], -tresure[n - 1][0]) / Math.PI * 180.0 + 90.0;
			tresure[n][0] = tresure[n - 1][0] - Math.cos(angle / 180.0 * Math.PI);
			tresure[n][1] = tresure[n - 1][1] - Math.sin(angle / 180.0 * Math.PI);
		}

		for(int n = 0; n < point.size(); n++) {
			int	item = point.get(n);
			System.out.printf("%.2f\n%.2f\n", tresure[item - 1][0], tresure[item - 1][1]);
		}
	}

	private static int parseNum() {
		int		num   = -1;
		String	strIn = null;

		if ((strIn = parseStdin()) != null) {
			num = Integer.parseInt(strIn);
		}
		
		return num;
	}

	private static String parseStdin() {
		String	strNum = null;

		try {
			String line = br.readLine();
			if (line != null) {
				if (!line.isEmpty()) {
					strNum = line;
				}
			}
		}
		catch (IOException e) {}

		return strNum;
	}
}