| Format | Example | Description |
Allocation | [Variable] = [Object] | A = x | pointer A can point to object x (i.e., x is accessible via A) |
Assignment | [Variable] = [Variable] | A = B | pointer A can point to every object accessible via B |
Store | [Variable].[Field] = [Variable] | A.f = B | for every object o accessible via A, the member variable f of o can point to every object accesible via B |
Load | [Variable] = [Variable].[Field] | A = B.f | for every object o accessible via B, A can point to every object accessible via the member variable f of o |
First Program | Second Program |
A = o A = x B = A | B = A A = x A = o |
The first line of the input contains one integer N, representing the number of statements in the program. There is exactly one space before and after the equal sign ‘=’.
Each of the following N lines contains one statement.
The output should contains 26 lines.
In the i-th line, output the name of the i-th pointer (which is the i-th uppercase letter) followed by a colon ‘:’ and a space, and then list the objects accessible via this pointer in alphabetical order.