Goal
Write a program that outputs the general solution to a symbolic system of equations. The general solution is one which cannot be simplified.
If a variable is not declared in any of the equations, the solution for that variable is itself (e.g. x -> x).
There is no solution if any equation in the system contains circular reference or self reference (please refer to the test cases for the examples).
Input
Line 1: An integer N for the number of variables.
Line 2: N space-separated variables in lexicographical order.
Line 3: An integer M for the number of equations.
Next M lines: One line for each equation in the format of variable = function.
Output
N lines: One line for the solution for each variable in lexicographical order, in the format of variable -> solution.
Or in the case of no solution:
Line 1: No solution!
Constraints
1 ≤ N ≤ 10
0 ≤ M ≤ 10
1 ≤ length of each variable name ≤ 2, and the name is in lowercase letters.
1 ≤ length of each function name ≤ 2, and the name is in lowercase letters.
All variable names and function names are distinct.
A variable appears in the left side of at most one equation in the system.
A function may appear in different equations but always contains the same number (between 1 and N) of different variables as its arguments.
Example
Input
3
x y z
2
z = f ( x y )
y = h ( x )
Output
x -> x
y -> h ( x )
z -> f ( x h ( x ) )