```n = 2
A                       B                       C

|                       |                       |
|                       |                       |
|                       |                       |
--
------

|                       |                       |
|                       |                       |
|                       |                       |
--
------

|                       |                       |
|                       |                       |
|                       |                       |
--
------

print this

|                       |                       |
|                       |                       |
|                       |                       |
--
------

move 2 disks from A to C using B So A is "from", B is "using", C is "to".

The psuedocode for this is:
Recursively: move 1 disk from "from" to "using", using "to"
print: Move "from" to "to"
Recursively: move 1 disk from "using" to "to", using "from"

public static void towers(char from, char to,  char using, int n)
{
if( n!=0)
{
towers(from, using, to, n-1);
System.out.println("move "+ from + " to " + to);
towers(using, to, from, n-1);
}
}

n = 3

A                       B                       C

|                       |                       |
|                       |                       |
|                       |                       |
--
------
----------

move 2 disks from A to B

|                       |                       |
|                       |                       |
|                       |                       |
--
------
----------

|                       |                       |
|                       |                       |
|                       |                       |
--
------
----------

print this

move 2 disks from B to C

|                       |                       |
|                       |                       |
|                       |                       |
--
------
----------

```