title: How To Print Maximum Number Of A Using Given Four Keys
signature: howToPrintMaximumNumberOfAUsingGivenFourKeys(n) {
test_code: import 'dart:convert';
  
  // SOLUTION CODE
  // ============================================
  PLACEHOLDER_CODE_BODY
  
  // TESTING CODE 
  // ============================================
  bool validateSolution(int actual, int expected){
      return actual.toString() == expected.toString();
  }
  
  String driver(n, int expected){
      try
      {
          if (validateSolution(PLACEHOLDER_FN_NAME(n), expected)){
              return "PASSED";
          }
          return "FAILED";
      }catch(exception_object){
          return exception_object.runtimeType.toString();
      }
  }
  
  int main() {
  
      print("TEST-0...${driver(
          41, 
          110592)
      }");
  
      print("TEST-1...${driver(
          94, 
          274877906944)
      }");
  
      print("TEST-2...${driver(
          80, 
          5435817984)
      }");
  
      print("TEST-3...${driver(
          40, 
          82944)
      }");
  
      print("TEST-4...${driver(
          76, 
          1811939328)
      }");
  
      print("TEST-5...${driver(
          5, 
          5)
      }");
  
      print("TEST-6...${driver(
          43, 
          196608)
      }");
  
      print("TEST-7...${driver(
          67, 
          150994944)
      }");
  
      print("TEST-8...${driver(
          24, 
          1024)
      }");
  
      print("TEST-9...${driver(
          90, 
          86973087744)
      }");
  
      return 0;
  }
source_py: def how_to_print_maximum_number_of_a_using_given_four_keys(N):
      if (N <= 6):
          return N
      screen = ([0] * N)
      for n in range(1, 7):
          screen[(n - 1)] = n
      for n in range(7, (N + 1)):
          screen[(n - 1)] = max((2 * screen[(n - 4)]), max((3 * screen[(n - 5)]), (4 * screen[(n - 6)])))
      return screen[(N - 1)]
source_cpp: int how_to_print_maximum_number_of_a_using_given_four_keys(int N) {
    if ( N <= 6 ) return N;
    int screen [ N ];
    int b;
    int n;
    for ( n = 1;
    n <= 6;
    n ++ ) screen [ n - 1 ] = n;
    for ( n = 7;
    n <= N;
    n ++ ) {
      screen [ n - 1 ] = max ( 2 * screen [ n - 4 ], max ( 3 * screen [ n - 5 ], 4 * screen [ n - 6 ] ) );
    }
    return screen [ N - 1 ];
  }