/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
MyLinkedList<Integer> l = new MyLinkedList<>();
}
}
}
class MyLinkedList<T> implements Iterable<T> {
MyListNode head;
class MyListNode {
public T value;
public MyListNode next;
}
public Iterator<T> iterator() {
return new MyLinkedListIterator();
}
private class MyLinkedListIterator implements Iterator<T> {
private MyListNode curr;
public MyLinkedListIterator() {
this.curr = MyLinkedList.this.head;
}
public boolean hasNext() {
return this.curr != null;
}
public T next() {
if (this.hasNext()) {
T value = curr.value;
curr = curr.next;
return value;
}
}
public void remove() {
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCU15TGlua2VkTGlzdDxJbnRlZ2VyPiBsID0gbmV3IE15TGlua2VkTGlzdDw+KCk7CgkJZm9yIChJbnRlZ2VyIHYgOiBsKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbih2KTsKCQl9Cgl9Cn0KCmNsYXNzIE15TGlua2VkTGlzdDxUPiBpbXBsZW1lbnRzIEl0ZXJhYmxlPFQ+IHsKCiAgICBNeUxpc3ROb2RlIGhlYWQ7CgogICAgY2xhc3MgTXlMaXN0Tm9kZSB7CiAgICAJcHVibGljIFQgdmFsdWU7CiAgICAJcHVibGljIE15TGlzdE5vZGUgbmV4dDsKICAgIH0KCiAgICBwdWJsaWMgSXRlcmF0b3I8VD4gaXRlcmF0b3IoKSB7CiAgICAgICAgcmV0dXJuIG5ldyBNeUxpbmtlZExpc3RJdGVyYXRvcigpOwogICAgfQoKICAgIHByaXZhdGUgY2xhc3MgTXlMaW5rZWRMaXN0SXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvcjxUPiB7CgogICAgICAgIHByaXZhdGUgTXlMaXN0Tm9kZSBjdXJyOwoKICAgICAgICBwdWJsaWMgTXlMaW5rZWRMaXN0SXRlcmF0b3IoKSB7CiAgICAgICAgICAgIHRoaXMuY3VyciA9IE15TGlua2VkTGlzdC50aGlzLmhlYWQ7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyICE9IG51bGw7CiAgICAgICAgfQoKICAgICAgICBwdWJsaWMgVCBuZXh0KCkgewogICAgICAgICAgICBpZiAodGhpcy5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgIFQgdmFsdWUgPSBjdXJyLnZhbHVlOwogICAgICAgICAgICAgICAgY3VyciA9IGN1cnIubmV4dDsKICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyBuZXcgTm9TdWNoRWxlbWVudEV4Y2VwdGlvbigpOwogICAgICAgIH0KCiAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlKCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKICAgICAgICB9CiAgICB9Cn0JCg==