output_description: Print the maximum number of points you can gain.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
      A_1 A_2 \cdots A_{3N}
attempt: n = int(input())
  a = [*map(int, input().split())]
  for i in range(n * 3):
      a[i] -= 1
  
  INF = 1 << 30
  dp = [[-INF] * n for i in range(n)]
  mx = [-INF] * n
  mx_all = -INF
  add_all = 0
  
  dp[a[0]][a[1]] = dp[a[1]][a[0]] = 0
  mx[a[0]] = mx[a[1]] = 0
  mx_all = 0
  
  for i in range(n - 1):
      x, y, z = sorted(a[i * 3 + 2 : i * 3 + 5])
      update = []
      # パターン1
      if x == y == z:
          add_all += 1
          continue
      # パターン2
      if x == y:
          for j in range(n):
              update.append((j, z, dp[j][x] + 1))
      if y == z:
          for j in range(n):
              update.append((j, x, dp[j][y] + 1))
      # パターン3
      update.append((y, z, dp[x][x] + 1))
      update.append((x, z, dp[y][y] + 1))
      update.append((x, y, dp[z][z] + 1))
      # パターン2-2
      for j in range(n):
          update.append((j, x, mx[j]))
          update.append((j, y, mx[j]))
          update.append((j, z, mx[j]))
      # パターン3-2
      update.append((y, z, mx_all))
      update.append((x, z, mx_all))
      update.append((x, y, mx_all))
      # in-place にするために更新を遅延させる
      for j, k, val in update:
          if dp[j][k] < val:
              dp[j][k] = dp[k][j] = val
          if mx[j] < val:
              mx[j] = val
          if mx[k] < val:
              mx[k] = val
          if mx_all < val:
              mx_all = val
  
  # 最後の 1 回
  if mx_all < dp[a[-1]][a[-1]] + 1:
      mx_all = dp[a[-1]][a[-1]] + 1
  print(mx_all + add_all)
  
problem_description: Statement
  
  We have 3N cards arranged in a row from left to right, where each card has an
  integer between 1 and N (inclusive) written on it. The integer written on the
  i-th card from the left is A_i.
  
  You will do the following operation N-1 times:
  
    * Rearrange the five leftmost cards in any order you like, then remove the three leftmost cards. If the integers written on those three cards are all equal, you gain 1 point.
  
  After these N-1 operations, if the integers written on the remaining three
  cards are all equal, you will gain 1 additional point.
  
  Find the maximum number of points you can gain.
samples: [{"input": "2\n    1 2 1 2 2 1", "output": "2\n    \n\nLet us rearrange the five leftmost cards so that the integers written on the\nsix cards will be 2\\ 2\\ 2\\ 1\\ 1\\ 1 from left to right.\n\nThen, remove the three leftmost cards, all of which have the same integer 2,\ngaining 1 point.\n\nNow, the integers written on the remaining cards are 1\\ 1\\ 1.\n\nSince these three cards have the same integer 1, we gain 1 more point.\n\nIn this way, we can gain 2 points - which is the maximum possible.\n\n* * *"}, {"input": "3\n    1 1 2 2 3 3 3 2 1", "output": "1\n    \n\n* * *"}, {"input": "3\n    1 1 2 2 2 3 3 3 1", "output": "3"}]