import java.lang.*;
import java.lang.ref.WeakReference;

class Ideone
{
	static class IntArray
	{
		WeakReference<Object> self;
		int[] array1;
		int size;
		
		class Setter implements Runnable
		{
			private int index;
			private int value;
			Setter(int index, int value)
			{
				this.index = index;
				this.value = value;
			}
			@Override
			public void run()
			{
				if (index < 0) index = -index;
				if (index >= size) index = index % size;
				synchronized (self)
				{
					int[] tmp = array1.clone();
					tmp[index] = value;
					array1 = tmp;
				}
			}
		}
		
		IntArray(int size) 
		{
			this.size = size;
			array1 = new int[size];
			self = new WeakReference<Object>(this);
		}
		
		public void setValue(int index, int value)
		{
			Thread thread = new Thread(new Setter(index, value));
			thread.start();
		}
		
		public int getValue(int index)
		{
			return array1[index];
		}
		
		public int length()
		{
			return size;
		}
	}
	
	public static void main (String[] args) throws java.lang.Exception
	{
		IntArray array = new IntArray(10);
		
		for (int i = 0; i < 10; ++i)
		{
			array.setValue(i, i * 10);
			array.setValue(i, i * 20);
		}

		for (int i = 0; i < 10; ++i)
		{
			array.setValue(i, i + i + 5);
		}
		
		for (int i = 0; i < 10; ++i)
		{
			System.out.println("1) " + i + ": = " + array.getValue(i));
		}
	}
}