class Node {
  Node(int val) {
    this.val = val;
  }
  public String toString() {
    return Integer.toString(val);
  }
  int val;
  Node next = null;
}

public class List {
  private Node head = null;
  public void prepend(int val) {
    Node q = new Node(val);
    q.next = head;
    head = q;
  }
  public void append(int val) {
    Node q = new Node(val);
    if(head == null) {
      // prepend
      head = q;
    } else {
      Node prev = head;
      while(prev.next != null)
        prev = prev.next;
      prev.next = q;
    }
  }
  public Node find(int val) {
    Node p=head;
    while(p != null && p.val != val)
      p = p.next;
    return p;
  }
  public void insert(int val) { // sorted
    Node q = new Node(val);
    Node p = head, prev = null;
    while(p != null && p.val < val) {
      prev = p;
      p = p.next;
    }
    if(prev == null)
      head = q;
    else
      prev.next = q;
    q.next = p;
  }
  public void remove(int val) {
    Node p=head, prev = null;
    while(p != null && p.val != val) {
      prev = p;
      p = p.next;
    }
    if(p != null) {
      if(p == head)
        head = head.next;
      else
        prev.next = p.next;
    }
  }
  public String toString() {
    StringBuilder result = new StringBuilder();
    result.append("{");
    Node p=head;
    while(p != null) {
      result.append(" " + p.val);
      p = p.next;
    }
    result.append(" }");
    return result.toString();
  }
  public static void main(String[] args) {
    List l1 = new List();
    l1.insert(6);
    l1.prepend(5);
    l1.prepend(4);
    Out.println("l1 = " + l1);
    l1.append(8);
    l1.append(9);
    Out.println("l1 = " + l1);
    l1.prepend(2);
    l1.prepend(1);
    Out.println("l1 = " + l1);
    Out.println(l1.find(8));
    Out.println(l1.find(3));
    l1.insert(3);
    Out.println("l1 = " + l1);
    l1.insert(7);
    Out.println("l1 = " + l1);
    l1.insert(0);
    Out.println("l1 = " + l1);
    l1.remove(1);
    l1.remove(3);
    l1.remove(5);
    l1.remove(7);
    l1.remove(9);
    Out.println("l1 = " + l1);
  }
}

