public static void main(String[] argv) {
    Random gen = new Random();
    node_t<Integer> head = null;
    int n = 0;
    if (argv.length > 1) {
      for (int i = 0; i < argv.length; ++i) {
        node_t<Integer> curr =
            new node_t<Integer>(Integer.parseInt(argv[i]), null);
        curr.next = head;
        head = curr;
      }
    } else {
      if (argv.length == 1) {
        n = Integer.parseInt(argv[0]);
      } else {
        n = gen.nextInt(1000) + 1;
      }
      for (int i = n; i >= 0; --i) {
        node_t<Integer> curr = new node_t<Integer>(i, null);
        curr.next = head;
        head = curr;
      }
    }

    node_t<Integer> curr = zipping_linked_list(head);
    int idx = 0, pre = 0;
    while (curr != null) {
      if (argv.length <= 1) {
        if ((idx & 1) != 0) {
          assert(pre + curr.data == n);
        }
      }
      ++idx;
      System.out.println(curr.data);
      pre = curr.data;
      curr = curr.next;
    }
  }