class Node(object):

    '''A single node in the tree; contains a value, pointers to the left and
    right subtrees, as well as how many nodes there are in the subtree rooted
    at this node.'''
    
    def __init__(self, value):
        '''Create a new node containing value with no children.'''
        self.value = value
        self.left = None
        self.right = None
        self.size = 1
        # You should not add any more attributes to this class.
        
class TreeList(object):

    '''A partial implementation of a list using a binary tree.'''
    
    def __init__(self):
        '''Create an empty list.'''
        self.root = None
        # You should not add any more attributes to this class.
        
    def set_root(self, new_root):
        '''Set the root of the tree to be new_root.'''
        self.root = new_root
        
    def get_root(self):
        '''Return a pointer to the root node of this tree.'''
        return self.root
        
    def get(self, index):
        '''Return element index of the list.'''
        pass
        
    def insert(self, index, value):
        '''Insert value at position index, shifting everything else to the
        right.  Always inserts value to be a leaf.'''
        pass
        
    def size(self):
        '''How many elements are in the list.'''
        pass

