Buggy python submission (verdict: Time Limit Exceeded):
import sys
input = sys.stdin.readline

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

color = [a[0]]

for i in range(1,n):
    idx = bisect.bisect_left(color,a[i])
    if idx == 0:
        color.insert(0,a[i])
    else:
        color[idx-1] = a[i]
        
print(len(color))

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
import sys
input = sys.stdin.readline

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

color = [a[0]]

for i in range(1,n):
    idx = bisect.bisect_left(color,a[i])
    if idx == 0:
        color.insert(0,a[i])
    else:
        color[idx-1] = a[i]
        
print(len(color))

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
import bisect
n = int(input())

a = [int(input()) for i in range(n)]

color = [a[0]]

for i in range(1,n):
    idx = bisect.bisect_left(color,a[i])
    if idx == 0:
        color.insert(0,a[i])
    else:
        color[idx-1] = a[i]
        
print(len(color))

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
import bisect
n = int(input())

a = [int(input()) for i in range(n)]

color = [a[0]]

for i in range(1,n):
    idx = bisect.bisect_left(color,a[i])
    if idx == 0:
        color.insert(0,a[i])
    else:
        color[idx-1] = a[i]
        
print(len(color))

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
 
n = int(input())

a = [int(input()) for i in range(n)]

color = [[-1] for i in range(n+1)]

max_j = 0
for i in range(n):
    for j in range(n):
        #print(color[j][-1])
        if a[i] > color[j][-1]:
            color[j].append(a[i])
            max_j = max(max_j,j+1)
            break
            
print(max_j)

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
 
n = int(input())

a = [int(input()) for i in range(n)]

color = [[-1] for i in range(n+1)]

max_j = 0
for i in range(n):
    for j in range(n):
        #print(color[j][-1])
        if a[i] > color[j][-1]:
            color[j].append(a[i])
            max_j = max(max_j,j+1)
            break
            
print(max_j)

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))

Buggy python submission (verdict: Time Limit Exceeded):
import sys
import numpy as np
from scipy.misc import comb
sys.setrecursionlimit(1000000)
 
n = int(input())

a = [int(input()) for i in range(n)]

color = [[-1] for i in range(n+1)]

max_j = 0
for i in range(n):
    for j in range(n):
        #print(color[j][-1])
        if a[i] > color[j][-1]:
            color[j].append(a[i])
            max_j = max(max_j,j+1)
            break
            
print(max_j)

Fixed submission:
import sys
input = sys.stdin.readline

from collections import deque

import bisect
n = int(input())

a = [int(input()) for i in range(n)]

#color = [a[0]]

d = deque()
d.appendleft(a[0])

for i in range(1,n):
    idx = bisect.bisect_left(d,a[i])
    if idx == 0:
        d.appendleft(a[i])
    else:
        d[idx-1] = a[i]
        
print(len(d))