// mem.in3
// some array code

struct List {
  List * owner next;
};

List * owner append(List owner *head, List owner *tail)
{
  if (!head) {
    return tail;
  }
  else {
    List /*serf*/ *tmp;
    tmp = head;
    while (tmp->next) {
      tmp = tmp->next;
    }
    tmp->next = tail;            // swap(tmp->next, tail);
    return head;
  }
}
