// $Id: lists.java,v 1.2 2004/09/07 20:33:26 mwh Exp $
// http://www.bagley.org/~doug/shootout/

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

public class lists {
    static int SIZE = 10000;

    public static void main(String args[]) {
	int n = Integer.parseInt(args[0]);
	//@START
	int result = 0;
	for (int i = 0; i < n; i++) {
	    result = test_lists();
	}
	System.out.println(result);
	//@END
    }
    public static int test_lists() {
	int result = 0;
	// create a list of integers (Li1) from 1 to SIZE
	LinkedList Li1 = new LinkedList();
	for (int i = 1; i < SIZE+1; i++) {
	    Li1.addLast(new Integer(i));
	}
	// copy the list to Li2 (not by individual items)
	LinkedList Li2 = new LinkedList(Li1);
	LinkedList Li3 = new LinkedList();
	// remove each individual item from left side of Li2 and
	// append to right side of Li3 (preserving order)
	while (! Li2.isEmpty()) {
	    Li3.addLast(Li2.removeFirst());
	}
	// Li2 must now be empty
	// remove each individual item from right side of Li3 and
	// append to right side of Li2 (reversing list)
	while (! Li3.isEmpty()) {
	    Li2.addLast(Li3.removeLast());
	}
	// Li3 must now be empty
	// reverse Li1
	LinkedList tmp = new LinkedList();
	while (! Li1.isEmpty()) {
	    tmp.addFirst(Li1.removeFirst());
	}
	Li1 = tmp;
	// check that first item is now SIZE
	if (((Integer)Li1.getFirst()).intValue() != SIZE) {
	    System.err.println("first item of Li1 != SIZE");
	    return(0);
	}
	// compare Li1 and Li2 for equality
	if (! Li1.equals(Li2)) {
	    System.err.println("Li1 and Li2 differ");
	    System.err.println("Li1:" + Li1);
	    System.err.println("Li2:" + Li2);
	    return(0);
	}
	// return the length of the list
	return(Li1.size());
    }
}
