
__A				={}





def 			lowerCamelCase_ (				lowerCamelCase__	, lowerCamelCase__	, lowerCamelCase__    ):

				# if we are absent twice, or late 3 consecutive days,
				# no further prize strings are possible
				if late == 3 or absent == 2:
								return 0

				# if we have no days left, and have not failed any other rules,
				# we have a prize string
				if days == 0:
								return 1

				# No easy solution, so now we need to do the recursive calculation

				# First, check if the combination is already in the cache, and
				# if yes, return the stored value from there since we already
				# know the number of possible prize strings from this point on
				lowerCamelCase_						=			(days, absent, late)
				if key in cache:
								return cache[key]

				# now we calculate the three possible ways that can unfold from
				# this point on, depending on our attendance today

				# 1) if we are late (but not absent), the "absent" counter stays as
				# it is, but the "late" counter increases by one
				lowerCamelCase_						=			_calculate(days - 1	, lowerCamelCase__	, late + 1    )

				# 2) if we are absent, the "absent" counter increases by 1, and the
				# "late" counter resets to 0
				lowerCamelCase_						=			_calculate(days - 1	, absent + 1	, 0    )

				# 3) if we are on time, this resets the "late" counter and keeps the
				# absent counter
				lowerCamelCase_						=			_calculate(days - 1	, lowerCamelCase__	, 0    )

				lowerCamelCase_						=			state_late + state_absent + state_ontime

				lowerCamelCase_						=			prizestrings
				return prizestrings





def 			lowerCamelCase_ (				lowerCamelCase__ = 3_0    ):
				return _calculate(lowerCamelCase__	, absent=0	, late=0    )


if __name__ == "__main__":
			print(solution())



"""simple docstring"""







from __future__ import annotations

__SCREAMING_SNAKE_CASE    	=[]



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     list[list[int]]     ,			__SCREAMING_SNAKE_CASE							:     int     ,			__SCREAMING_SNAKE_CASE							:     int      ):
     for i in range(len(__SCREAMING_SNAKE_CASE      )      ):
          if board[row][i] == 1:
               return False
     for i in range(len(__SCREAMING_SNAKE_CASE      )      ):
          if board[i][column] == 1:
               return False
     for i, j in zip(range(__SCREAMING_SNAKE_CASE     ,			-1     ,			-1      )     ,			range(__SCREAMING_SNAKE_CASE     ,			-1     ,			-1      )      ):
          if board[i][j] == 1:
               return False
     for i, j in zip(range(__SCREAMING_SNAKE_CASE     ,			-1     ,			-1      )     ,			range(__SCREAMING_SNAKE_CASE     ,			len(__SCREAMING_SNAKE_CASE      )      )      ):
          if board[i][j] == 1:
               return False
     return True



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     list[list[int]]     ,			__SCREAMING_SNAKE_CASE							:     int      ):
     if row >= len(__SCREAMING_SNAKE_CASE      ):
          solution.append(__SCREAMING_SNAKE_CASE      )
          printboard(__SCREAMING_SNAKE_CASE      )
          print()
          return True
     for i in range(len(__SCREAMING_SNAKE_CASE      )      ):
          if is_safe(__SCREAMING_SNAKE_CASE     ,			__SCREAMING_SNAKE_CASE     ,			__SCREAMING_SNAKE_CASE      ):
               lowercase_	:				int													=	1
               solve(__SCREAMING_SNAKE_CASE     ,			row + 1      )
               lowercase_	:				Dict													=	0
     return False



def 			lowercase__(       __SCREAMING_SNAKE_CASE							:     list[list[int]]      ):
     for i in range(len(__SCREAMING_SNAKE_CASE      )      ):
          for j in range(len(__SCREAMING_SNAKE_CASE      )      ):
               if board[i][j] == 1:
                    print('Q'     ,			end=' '      )
               else:
                    print('.'     ,			end=' '      )
          print()


# n=int(input("The no. of queens"))
__SCREAMING_SNAKE_CASE    	=8
__SCREAMING_SNAKE_CASE    	=[[0 for i in range(n)] for j in range(n)]
solve(board, 0)







print("The total no. of solutions are :", len(solution))

