Напишите эффективную, в том числе и по используемой памяти, программу которая должна вывести на экран максимальное произведение двух различных элементов последовательности которое не кратно 15.

Если такой пары нет, программа должна вывести 0.

Пример входных данных:

4
90
10
29
3

Пример выходных данных:

290

Программа не эфективная по времени и памяти:

a=[]
m=0
n=int(input())
for i in range(n):
           a.append(int(input()))
for i in range(n-1):
           for g in range(1+i,n):
                       if a[i]*a[g]%15!=0 and a[i]*a[g]>m:
                                   m=a[i]*a[g]
print(m)

Программа эфективная по времени и памяти:

n=int(input())
m1=0 # наибольший элемент не кратный 3 но кратный 5
m2=0 # наибольший элемент не кратный 15
m3=0 # наибольший элемент не кратный 5 но кратный 3
for i in range(n):
           k=int(input())
           if k%3!=0 and k%5==0 and k>m1:
                       m1=k
           elif k%15!=0 and k>m2:
                       m2=k
           elif k%5!=0 and k%3==0 and k>m3:
                      m3=k
if m2*m1>m2*m3 and m2*m1>m1*m3:
           print(m2*m1)
elif m2*m1<m2*m3 and m2*m3>m1*m3:
           print(m2*m3)
elif m2*m1<m1*m3 and m1*m3>m2*m3:
           print(m1*m3)