size= int(input("Enter the size of the hash table: "))

hashtable= [None]*size

def linear_prob():
    for x in range (0,size,1):    
        key= int(input("Enter the telephone number: "))
        hk= key%size
        if (hashtable[hk]== None):
            hashtable[hk]= key
        else:
            for i in range(1, size, 1):
                if (hashtable[(hk+i)%size]== None):
                    hashtable[(hk+i)%size]= key
                # else:
                #     hk= (key+i)%size
                
                if (i== size-1 and hashtable!= None):
                    print("The table is full\n")

def quadratic_prob():
    for i in range (0, size,1):
        key= int(input("Enter the phone number: "))
        hk= key%size
        
        if (hashtable[hk]== None):
            hashtable[hk]= key
            
        else:
            for i in range (1, size, 1):
                if (hashtable[(hk+ i*i)%size]== None):
                    hashtable[(hk+ i*i)%size]= key
                    
                if (i== size-1 and hashtable[i]!= None):
                    print("table is full\n")
                    
x=0                    
while (x!= 3):
    x= int(input("1. linear_prob\n2. quadratic_prob\n3. exit\nEnter your choice: ")) 
    match x:
        case 1:
            linear_prob()
            print(hashtable)
            
        case 2:
            quadratic_prob()
            print(hashtable)
            
        case 3:
            print("exiting:::::")
            break;
        
        case _:
            print("Enter a valid number\n")
        
# [5, 6, 8, 3, 4]        




    





















