import java.util.; / public class ListNode { int val; ListNode next = null;

ListNode(int val) {
    this.val = val;
}

} */ public class Solution {

public ListNode EntryNodeOfLoop(ListNode pHead) {
    Set<ListNode> alreadyTraversed = new HashSet<>();
    alreadyTraversed.add(pHead);
    
    ListNode currentNode = pHead;
    while(currentNode.next != null){
        int prevLen = alreadyTraversed.size();
        currentNode = currentNode.next;
        alreadyTraversed.add(currentNode);
        int currentLen = alreadyTraversed.size();
        
        if (prevLen == currentLen){
            return currentNode;
        }
    }
    return null;
    
}

}