text: // $Id: lists.java,v 1.1 2004-05-23 07:12:55 bfulgham 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]);
          int result = 0;
          for (int i = 0; i < n; i++) {
              result = test_lists();
          }
          System.out.println(result);
      }
      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());
      }
  }
  