title: Find Maximum Sum Possible Equal Sum Three Stacks
signature: fun findMaximumSumPossibleEqualSumThreeStacks(stack1: ArrayList<Int>, stack2: ArrayList<Int>, stack3: ArrayList<Int>, n1: Int, n2: Int, n3: Int): Int {
source_py: def find_maximum_sum_possible_equal_sum_three_stacks(stack1, stack2, stack3, n1, n2, n3):
      (sum1, sum2, sum3) = (0, 0, 0)
      for i in range(n1):
          sum1 += stack1[i]
      for i in range(n2):
          sum2 += stack2[i]
      for i in range(n3):
          sum3 += stack3[i]
      (top1, top2, top3) = (0, 0, 0)
      ans = 0
      while 1:
          if ((top1 == n1) or (top2 == n2) or (top3 == n3)):
              return 0
          if ((sum1 == sum2) and (sum2 == sum3)):
              return sum1
          if ((sum1 >= sum2) and (sum1 >= sum3)):
              sum1 -= stack1[top1]
              top1 = (top1 + 1)
          elif ((sum2 >= sum3) and (sum2 >= sum3)):
              sum2 -= stack2[top2]
              top2 = (top2 + 1)
          elif ((sum3 >= sum2) and (sum3 >= sum1)):
              sum3 -= stack3[top3]
              top3 = (top3 + 1)
source_cpp: int find_maximum_sum_possible_equal_sum_three_stacks(vector<int> stack1, vector<int> stack2, vector<int> stack3, int n1, int n2, int n3) {
    int sum1 = 0, sum2 = 0, sum3 = 0;
    for ( int i = 0;
    i < n1;
    i ++ ) sum1 += stack1 [ i ];
    for ( int i = 0;
    i < n2;
    i ++ ) sum2 += stack2 [ i ];
    for ( int i = 0;
    i < n3;
    i ++ ) sum3 += stack3 [ i ];
    int top1 = 0, top2 = 0, top3 = 0;
    int ans = 0;
    while ( 1 ) {
      if ( top1 == n1 || top2 == n2 || top3 == n3 ) return 0;
      if ( sum1 == sum2 && sum2 == sum3 ) return sum1;
      if ( sum1 >= sum2 && sum1 >= sum3 ) sum1 -= stack1 [ top1 ++ ];
      else if ( sum2 >= sum3 && sum2 >= sum3 ) sum2 -= stack2 [ top2 ++ ];
      else if ( sum3 >= sum2 && sum3 >= sum1 ) sum3 -= stack3 [ top3 ++ ];
    }
  }
question_info.test_list: [{"idx": 0, "outputs": 0, "inputs": {"stack1": [4, 10, 11, 24, 27, 33, 34, 36, 36, 40, 42, 43, 52, 58, 67, 69, 77, 86, 86, 88], "stack2": [4, 13, 34, 40, 41, 47, 47, 52, 55, 62, 66, 66, 69, 70, 73, 74, 75, 76, 85, 98], "stack3": [6, 8, 10, 12, 14, 29, 41, 52, 53, 54, 55, 66, 69, 73, 77, 77, 78, 80, 90, 99], "n1": 10, "n2": 12, "n3": 18}}, {"idx": 1, "outputs": 0, "inputs": {"stack1": [40, 54, 14, 58, -64, -60, -98, -64, -52, 30, 0, -42, 74, 46, -14, 76, 84, 74, -24, 30, 96, 88, -98, 82, 44, -86, -92, -52, 28, 62], "stack2": [24, 34, -52, 50, -8, -48, -28, 68, -12, -26, 0, 6, -76, -94, -12, 8, 38, -88, 30, 98, -78, -54, -48, 42, 26, -76, 4, 46, 26, 60], "stack3": [-8, -24, 54, 28, 92, 94, 0, 62, 28, 80, 82, 2, 88, -4, -28, 80, 44, 34, -98, 36, 28, 76, -48, 40, 98, 4, 22, -36, -20, -70], "n1": 26, "n2": 28, "n3": 15}}, {"idx": 2, "outputs": 0, "inputs": {"stack1": [0, 0], "stack2": [1, 1], "stack3": [0, 0], "n1": 1, "n2": 1, "n3": 1}}, {"idx": 3, "outputs": 0, "inputs": {"stack1": [64, 40, 45, 93, 30, 79, 24, 95, 1, 84, 74, 5, 9, 6, 22, 33, 10, 53, 33, 9, 31, 21, 22, 77, 21, 93, 86, 68, 92, 57, 27, 82, 87, 11, 51, 2, 27, 2, 24, 57, 20, 2, 32, 43], "stack2": [48, 85, 55, 12, 24, 26, 88, 76, 15, 34, 23, 61, 2, 99, 11, 37, 65, 74, 92, 96, 68, 50, 67, 98, 89, 17, 62, 18, 51, 61, 41, 41, 90, 64, 89, 51, 48, 95, 9, 86, 28, 54, 64, 35], "stack3": [99, 77, 11, 20, 33, 91, 5, 68, 75, 67, 37, 70, 59, 26, 2, 62, 6, 97, 95, 38, 46, 89, 29, 61, 27, 93, 26, 74, 98, 85, 91, 92, 40, 97, 58, 44, 20, 57, 65, 62, 65, 26, 74, 58], "n1": 42, "n2": 27, "n3": 31}}, {"idx": 4, "outputs": 0, "inputs": {"stack1": [-94, -50, -24, -12, -6, -6, 8, 26, 28, 44], "stack2": [-96, -94, -86, -70, -52, -18, -6, 20, 52, 52], "stack3": [-70, -40, -22, 4, 12, 12, 38, 54, 72, 74], "n1": 5, "n2": 5, "n3": 5}}, {"idx": 5, "outputs": 7, "inputs": {"stack1": [1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1], "stack2": [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1], "stack3": [0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0], "n1": 39, "n2": 34, "n3": 26}}, {"idx": 6, "outputs": 0, "inputs": {"stack1": [3, 3, 4, 5, 9, 18, 21, 22, 25, 27, 28, 33, 35, 39, 39, 43, 57, 58, 59, 63, 65, 65, 72, 77, 78, 78, 80, 80, 88, 92, 99], "stack2": [3, 17, 18, 23, 24, 24, 26, 28, 34, 48, 53, 54, 56, 61, 64, 67, 69, 74, 77, 79, 79, 81, 81, 82, 84, 84, 85, 86, 88, 92, 96], "stack3": [1, 3, 5, 8, 15, 16, 27, 27, 27, 28, 29, 30, 32, 35, 36, 37, 44, 47, 57, 65, 69, 70, 70, 76, 76, 83, 85, 87, 88, 90, 92], "n1": 24, "n2": 16, "n3": 29}}, {"idx": 7, "outputs": 0, "inputs": {"stack1": [40, 28, -84, -38, 82, 2, 38, 10, -10, 20, -54, 48, 56, 38, -98, 68, -8, -30, -96, -16, 28, 94, -52, 28, 34, 68, -46, 44, -28, -52, -48, -14, -30, 24, 56, 8, -30, -46, 18, -68, 86, -12], "stack2": [26, 24, -50, 18, 78, -90, 62, 88, -36, -96, 78, 6, -94, -2, -28, -38, 66, 72, -36, 14, -48, -64, -24, 82, 92, -16, -26, -12, 6, 34, 30, -46, 48, -22, 34, -64, 4, -32, 84, -20, 32, -22], "stack3": [66, 26, -90, -40, -52, -98, 84, 88, 40, -92, 30, 28, 32, 92, 18, -34, -42, 64, -34, 70, -72, 28, 44, 34, 76, -78, 46, -48, 20, 54, -2, 66, 6, 56, 52, -98, -48, -70, -60, 94, 90, 10], "n1": 32, "n2": 37, "n3": 41}}, {"idx": 8, "outputs": 2, "inputs": {"stack1": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "stack2": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "stack3": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "n1": 16, "n2": 23, "n3": 22}}, {"idx": 9, "outputs": 0, "inputs": {"stack1": [22, 31, 75, 48, 30, 39, 82, 93, 26, 87, 77, 87, 67, 88, 19, 51, 54, 48, 6, 37, 38, 27], "stack2": [18, 20, 53, 87, 85, 63, 6, 81, 89, 82, 43, 76, 59, 60, 79, 96, 29, 65, 5, 56, 96, 95], "stack3": [10, 76, 49, 36, 41, 18, 60, 44, 81, 34, 56, 7, 13, 83, 82, 16, 7, 38, 33, 55, 91, 54], "n1": 19, "n2": 16, "n3": 17}}]
question_info.extension: kts
question_info.test_code: package main
  
  import kotlin.text.*
  import kotlin.math.*
  
  
  // SOLUTION CODE
  // ===================================
  PLACEHOLDER_CODE_BODY
  
  // TESTING CODE
  // ===================================
  fun validateSolution(actual:Int, expected:Int):Boolean{
    return actual.equals(expected)
  }
  fun driver(stack1: ArrayList<Int>, stack2: ArrayList<Int>, stack3: ArrayList<Int>, n1: Int, n2: Int, n3: Int, expected:Int):String {
      try{
        if (validateSolution(PLACEHOLDER_FN_NAME(stack1, stack2, stack3, n1, n2, n3), expected)) {
                return "PASSED"
        }
        return "FAILED"
      } catch (e: Exception){
        return e::class.simpleName as String
      }
  
  }
  
  fun main() {
      var result: String = ""
      result = driver(arrayListOf(4, 10, 11, 24, 27, 33, 34, 36, 36, 40, 42, 43, 52, 58, 67, 69, 77, 86, 86, 88), arrayListOf(4, 13, 34, 40, 41, 47, 47, 52, 55, 62, 66, 66, 69, 70, 73, 74, 75, 76, 85, 98), arrayListOf(6, 8, 10, 12, 14, 29, 41, 52, 53, 54, 55, 66, 69, 73, 77, 77, 78, 80, 90, 99), 10, 12, 18, 0)
      println("TEST-0...${result}")
      
      result = driver(arrayListOf(40, 54, 14, 58, -64, -60, -98, -64, -52, 30, 0, -42, 74, 46, -14, 76, 84, 74, -24, 30, 96, 88, -98, 82, 44, -86, -92, -52, 28, 62), arrayListOf(24, 34, -52, 50, -8, -48, -28, 68, -12, -26, 0, 6, -76, -94, -12, 8, 38, -88, 30, 98, -78, -54, -48, 42, 26, -76, 4, 46, 26, 60), arrayListOf(-8, -24, 54, 28, 92, 94, 0, 62, 28, 80, 82, 2, 88, -4, -28, 80, 44, 34, -98, 36, 28, 76, -48, 40, 98, 4, 22, -36, -20, -70), 26, 28, 15, 0)
      println("TEST-1...${result}")
      
      result = driver(arrayListOf(0, 0), arrayListOf(1, 1), arrayListOf(0, 0), 1, 1, 1, 0)
      println("TEST-2...${result}")
      
      result = driver(arrayListOf(64, 40, 45, 93, 30, 79, 24, 95, 1, 84, 74, 5, 9, 6, 22, 33, 10, 53, 33, 9, 31, 21, 22, 77, 21, 93, 86, 68, 92, 57, 27, 82, 87, 11, 51, 2, 27, 2, 24, 57, 20, 2, 32, 43), arrayListOf(48, 85, 55, 12, 24, 26, 88, 76, 15, 34, 23, 61, 2, 99, 11, 37, 65, 74, 92, 96, 68, 50, 67, 98, 89, 17, 62, 18, 51, 61, 41, 41, 90, 64, 89, 51, 48, 95, 9, 86, 28, 54, 64, 35), arrayListOf(99, 77, 11, 20, 33, 91, 5, 68, 75, 67, 37, 70, 59, 26, 2, 62, 6, 97, 95, 38, 46, 89, 29, 61, 27, 93, 26, 74, 98, 85, 91, 92, 40, 97, 58, 44, 20, 57, 65, 62, 65, 26, 74, 58), 42, 27, 31, 0)
      println("TEST-3...${result}")
      
      result = driver(arrayListOf(-94, -50, -24, -12, -6, -6, 8, 26, 28, 44), arrayListOf(-96, -94, -86, -70, -52, -18, -6, 20, 52, 52), arrayListOf(-70, -40, -22, 4, 12, 12, 38, 54, 72, 74), 5, 5, 5, 0)
      println("TEST-4...${result}")
      
      result = driver(arrayListOf(1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1), arrayListOf(1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1), arrayListOf(0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0), 39, 34, 26, 7)
      println("TEST-5...${result}")
      
      result = driver(arrayListOf(3, 3, 4, 5, 9, 18, 21, 22, 25, 27, 28, 33, 35, 39, 39, 43, 57, 58, 59, 63, 65, 65, 72, 77, 78, 78, 80, 80, 88, 92, 99), arrayListOf(3, 17, 18, 23, 24, 24, 26, 28, 34, 48, 53, 54, 56, 61, 64, 67, 69, 74, 77, 79, 79, 81, 81, 82, 84, 84, 85, 86, 88, 92, 96), arrayListOf(1, 3, 5, 8, 15, 16, 27, 27, 27, 28, 29, 30, 32, 35, 36, 37, 44, 47, 57, 65, 69, 70, 70, 76, 76, 83, 85, 87, 88, 90, 92), 24, 16, 29, 0)
      println("TEST-6...${result}")
      
      result = driver(arrayListOf(40, 28, -84, -38, 82, 2, 38, 10, -10, 20, -54, 48, 56, 38, -98, 68, -8, -30, -96, -16, 28, 94, -52, 28, 34, 68, -46, 44, -28, -52, -48, -14, -30, 24, 56, 8, -30, -46, 18, -68, 86, -12), arrayListOf(26, 24, -50, 18, 78, -90, 62, 88, -36, -96, 78, 6, -94, -2, -28, -38, 66, 72, -36, 14, -48, -64, -24, 82, 92, -16, -26, -12, 6, 34, 30, -46, 48, -22, 34, -64, 4, -32, 84, -20, 32, -22), arrayListOf(66, 26, -90, -40, -52, -98, 84, 88, 40, -92, 30, 28, 32, 92, 18, -34, -42, 64, -34, 70, -72, 28, 44, 34, 76, -78, 46, -48, 20, 54, -2, 66, 6, 56, 52, -98, -48, -70, -60, 94, 90, 10), 32, 37, 41, 0)
      println("TEST-7...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 16, 23, 22, 2)
      println("TEST-8...${result}")
      
      result = driver(arrayListOf(22, 31, 75, 48, 30, 39, 82, 93, 26, 87, 77, 87, 67, 88, 19, 51, 54, 48, 6, 37, 38, 27), arrayListOf(18, 20, 53, 87, 85, 63, 6, 81, 89, 82, 43, 76, 59, 60, 79, 96, 29, 65, 5, 56, 96, 95), arrayListOf(10, 76, 49, 36, 41, 18, 60, 44, 81, 34, 56, 7, 13, 83, 82, 16, 7, 38, 33, 55, 91, 54), 19, 16, 17, 0)
      println("TEST-9...${result}")
      
          
  }
  
  main()
question_info.entry_fn_name: findMaximumSumPossibleEqualSumThreeStacks
question_info.entry_cls_name: Solution
question_info.test_case_ids: 0 1 2 3 4 5 6 7 8 9
question_info.commands: kotlinc -script __FILENAME__ -no-reflect -nowarn