Given a singly linked list with n nodes (n is not given), you are asked to check whether there is a loop in the linked list. Can you design a program to do that with constant number of extra memories (independent of n) and O(n) in time? The linked list is read-only.