import java.io.*;
import java.util.*;

class Foo implements Cloneable
{
    private int[] a;

    public Foo(){
	a = new int[5];
	for (int j = 0; j < 5; j++)
	    a[j] = 0;
    }

    public int[] getA(){return a;}
    public int getA(int j){return a[j];}

    public void setA(int[] x){a = x;}
    public void setA(int j, int value){a[j] = value;}

    public Foo clone() {
	Foo b = null;
	try {
	    b = (Foo)super.clone();
	    b.setA(a.clone());
	} catch (CloneNotSupportedException e) {
	    System.out.println(e);
	}
	return b;
    }
}

public class Clone extends Foo implements Cloneable
{
    private int b;

    public Clone(){};

    public Clone(int x){b = x; for(int j=0; j<5; j++)setA(j, x);}

    public Clone clone(){
      Clone c = (Clone)super.clone();
      c.b = getA(0);
      return c;
    }

    public String toString() {
	String s = "" + b;
	for (int k = 0; k < 5; k++)
	    s += " " + getA(k);
	return s;
    }

    public static void main(String[] args) {
	Clone ja = new Clone(3);
	System.out.print("original ja: " + ja.toString() + "\n");

	Clone ju = ja.clone();
	System.out.print("ju as ja clone: " + ja.toString() + "\n");

	ju.setA(0, 7);
	ja.b = 9;
	System.out.println("after: ju.setA(0,7); ja.b=9;");
	System.out.print("ja: " +  ja.toString() + "\n");
	System.out.print("ju: " + ju.toString() + "\n");
    }
}

/* The output is
original ja: 3 3 3 3 3 3
ju as ja clone: 3 3 3 3 3 3
after: ju.setA(0,7); ja.b=9;
ja: 9 3 3 3 3 3
ju: 3 7 3 3 3 3
*/
