class Node:
    def __init__(self, value=None, next=None):
        self.value = value
        self.next = next

class Linked:
    def __init__(self):
        self.head = None  
    def append(self, value):
        #Adds a node with given value to the end of the list
        if self.head == None:
            self.head = Node(value)
        else:
            current = self.head
            while current.next != None:
                current = current.next
            current.next = Node(value)
    def isEmpty(self):
        #Returns True if the list is the empty list, False otherwise
        return self.head == None
    def getLength(self):
        #Returns the length of the list
        if self.head == None:
            return 0
        else:
            current = self.head
            count = 1
            while current.next != None:
                current = current.next
                count += 1
            return count
    def insert(self, index, value):
        #Inserts a node with the given value at the given index, shifting 
        #the rest of the list later.
        if index == 0:
            self.head = Node(value, self.head)
        else:
            current = self.head
            count = 1
            while count < index:
                current = current.next
                count += 1
            current.next = Node(value, current.next) 
