import sys

input = sys.stdin.readline

n = int(eval(input()))

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

b = [0]*n

for i in range(n):

  if a[i]%2:

    b[i] = 1

  elif a[i]:

    b[i] = 2

a.append(0)

b.append(0)

n += 1

DP = [[[10**18 for i in range(3)] for j in range(3)] for k in range(n+1)]

for i in range(3):

  for j in range(3):

    DP[0][i][j] = 0

for i in range(1,n+1):

  for k in (0,2):

    DP[i][0][k] = min(DP[i][0][k],DP[i-1][0][k]+abs(a[i-1]))

  for l in (1,2):

    DP[i][0][2] = min(DP[i][0][2],DP[i-1][l][2]+abs(a[i-1]))

  DP[i][0][2] = min(DP[i][0][2],DP[i-1][2][1]+abs(a[i-1]))



  DP[i][1][2] = min(DP[i][1][2],DP[i-1][0][0]+abs(b[i-1]-1))

  DP[i][1][2] = min(DP[i][1][2],DP[i-1][1][2]+abs(b[i-1]-1))

  DP[i][1][2] = min(DP[i][1][2],DP[i-1][2][1]+abs(b[i-1]-1))



  for k in (1,2):

    DP[i][2][k] = min(DP[i][2][k],DP[i-1][2][k]+abs(b[i-1]-2))

  DP[i][2][2] = min(DP[i][2][2],DP[i-1][1][2]+abs(b[i-1]-2))

  DP[i][2][1] = min(DP[i][2][1],DP[i-1][0][0]+abs(b[i-1]-2))

print((min(*DP[n][0])))
import sys

input = sys.stdin.readline

n = int(eval(input()))

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

b = [0]*n

for i in range(n):

  if a[i]%2:

    b[i] = 1

  elif a[i]:

    b[i] = 2

DP = [[10**18 for i in range(5)] for j in range(n+1)]

for i in range(5):

    DP[0][i] = 0

for i in range(1,n+1):

  for j in range(5):

    for k in range(j,5):

      if k == 0 or k == 4:

        DP[i][k] = min(DP[i][k],DP[i-1][j]+a[i-1])

      elif k == 1 or k == 3:

        DP[i][k] = min(DP[i][k],DP[i-1][j]+abs(b[i-1]-2))

      else:

        DP[i][k] = min(DP[i][k],DP[i-1][j]+abs(b[i-1]-1))

print((min(DP[n])))
import sys

input = sys.stdin.readline
n = int(eval(input()))
a = [int(eval(input())) for i in range(n)]
b = [0] * n
for i in range(n):
    if a[i] % 2:
        b[i] = 1
    elif a[i]:
        b[i] = 2
a.append(0)
b.append(0)
n += 1
DP = [[[10**18 for i in range(3)] for j in range(3)] for k in range(n + 1)]
for i in range(3):
    for j in range(3):
        DP[0][i][j] = 0
for i in range(1, n + 1):
    for k in (0, 2):
        DP[i][0][k] = min(DP[i][0][k], DP[i - 1][0][k] + abs(a[i - 1]))
    for l in (1, 2):
        DP[i][0][2] = min(DP[i][0][2], DP[i - 1][l][2] + abs(a[i - 1]))
    DP[i][0][2] = min(DP[i][0][2], DP[i - 1][2][1] + abs(a[i - 1]))
    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][0][0] + abs(b[i - 1] - 1))
    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][1][2] + abs(b[i - 1] - 1))
    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][2][1] + abs(b[i - 1] - 1))
    for k in (1, 2):
        DP[i][2][k] = min(DP[i][2][k], DP[i - 1][2][k] + abs(b[i - 1] - 2))
    DP[i][2][2] = min(DP[i][2][2], DP[i - 1][1][2] + abs(b[i - 1] - 2))
    DP[i][2][1] = min(DP[i][2][1], DP[i - 1][0][0] + abs(b[i - 1] - 2))
print((min(*DP[n][0])))

import sys

input = sys.stdin.readline
n = int(eval(input()))
a = [int(eval(input())) for i in range(n)]
b = [0] * n
for i in range(n):
    if a[i] % 2:
        b[i] = 1
    elif a[i]:
        b[i] = 2
DP = [[10**18 for i in range(5)] for j in range(n + 1)]
for i in range(5):
    DP[0][i] = 0
for i in range(1, n + 1):
    for j in range(5):
        for k in range(j, 5):
            if k == 0 or k == 4:
                DP[i][k] = min(DP[i][k], DP[i - 1][j] + a[i - 1])
            elif k == 1 or k == 3:
                DP[i][k] = min(DP[i][k], DP[i - 1][j] + abs(b[i - 1] - 2))
            else:
                DP[i][k] = min(DP[i][k], DP[i - 1][j] + abs(b[i - 1] - 1))
print((min(DP[n])))

-a.append(0) -b.append(0) -n += 1 -DP = [[[10**18 for i in range(3)] for j in range(3)] for k in range(n + 1)] -for i in range(3): -    for j in range(3): -        DP[0][i][j] = 0 +DP = [[10**18 for i in range(5)] for j in range(n + 1)] +for i in range(5): +    DP[0][i] = 0 -    for k in (0, 2): -        DP[i][0][k] = min(DP[i][0][k], DP[i - 1][0][k] + abs(a[i - 1])) -    for l in (1, 2): -        DP[i][0][2] = min(DP[i][0][2], DP[i - 1][l][2] + abs(a[i - 1])) -    DP[i][0][2] = min(DP[i][0][2], DP[i - 1][2][1] + abs(a[i - 1])) -    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][0][0] + abs(b[i - 1] - 1)) -    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][1][2] + abs(b[i - 1] - 1)) -    DP[i][1][2] = min(DP[i][1][2], DP[i - 1][2][1] + abs(b[i - 1] - 1)) -    for k in (1, 2): -        DP[i][2][k] = min(DP[i][2][k], DP[i - 1][2][k] + abs(b[i - 1] - 2)) -    DP[i][2][2] = min(DP[i][2][2], DP[i - 1][1][2] + abs(b[i - 1] - 2)) -    DP[i][2][1] = min(DP[i][2][1], DP[i - 1][0][0] + abs(b[i - 1] - 2)) -print((min(*DP[n][0]))) +    for j in range(5): +        for k in range(j, 5): +            if k == 0 or k == 4: +                DP[i][k] = min(DP[i][k], DP[i - 1][j] + a[i - 1]) +            elif k == 1 or k == 3: +                DP[i][k] = min(DP[i][k], DP[i - 1][j] + abs(b[i - 1] - 2)) +            else: +                DP[i][k] = min(DP[i][k], DP[i - 1][j] + abs(b[i - 1] - 1)) +print((min(DP[n])))