class Solution:
def maxEnvelopes(self, envelopes):
if not envelopes:
return 0
res, n = 0, len(envelopes)
envelopes.sort(key=lambda a:a[0])
mem = [1]*n
for i in range(n):
for j in range(i):
if envelopes[i][0] > envelopes[j][0] and envelopes[i][1] > envelopes[j][1]:
mem[i] = max(mem[j]+1, mem[i])
res = max(res, mem[i])
return res