/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
     public ListNode EntryNodeOfLoop(ListNode pHead) {
         if(pHead == null || pHead.next == null) {
             return null;
         }
         ListNode slow = pHead;
         ListNode fast = pHead;
         while(fast != null && fast.next != null) {
             slow = slow.next;
             fast = fast.next.next;
             if(slow == fast) {
                 ListNode p = pHead;
                 while(p != slow) {
                     p = p.next;
                     slow = slow.next;
                 }
                 return p;
             }
         }
         return null;
     }
}