import java.io.*;
import java.util.*;
public class fred {
static class Outer {
// This variable exists in the outer scope
private int ferdie;
private class Inner {
// This variable exists in the inner scope
private int dingle;
public Inner(int d)
{
dingle = d;
}
public void report()
{
// The reference to the outer scope and then the inner.
ferdie += 10;
dingle += 10;
System.out.println("Report: " + ferdie + " " + dingle);
}
}
private Inner g1, g2, g3;
public Outer()
{
ferdie = 10;
g1 = new Inner(100);
g2 = new Inner(200);
g3 = new Inner(300);
}
public void report()
{
System.out.println("Report: " + ferdie);
g1.report();
g2.report();
g3.report();
System.out.println("Report: " + ferdie);
}
}
public static void main(String[] args)
{
Outer z = new Outer();
z.report();
}
}
// Note: This program can be translated to C++ only by passing each Inner object
// a pointer to the Outer object.