#include <iostream>
using namespace std;
class Solution {
public:
    int t ,r, c = 0;
    int result = 0;
    bool res1[100][100] = {false};
    int movingCount(int threshold, int rows, int cols) {
       
        t = threshold;
        r = rows;
        c = cols;
        int i_1 = 0;
        int i_2 = 0;
       
     
        
//       
        if(rows > 0 && cols > 0){
              backTracking( i_1, i_2);
        }
       
        
        return result;
    }
    
    void backTracking(int i_1, int i_2){
          
      
            int a = i_1 % 10 + i_1 / 10;
            int b = i_2 % 10 + i_2 / 10;
          
            if(a + b <= t){
                
                
               
                 result += 1;
                    
                 
                 res1[i_1][i_2] = true;
                
              
                if(i_1 + 1 < r  && !res1[i_1 + 1][i_2]){
                 
                       backTracking(i_1 + 1, i_2);
                    
                 
                     
                 }
//                  if(0 <= i_1 - 1 && i_1 - 1 < r  && 0 <= i_2 && i_2 < c && rew[i_1 - 1][i_2]){
                     
//                         backTracking(rew, i_1 - 1, i_2);
//                         rew[i_1 - 1][i_2] = true;
                   
//                  }
                 if(i_2 + 1< c && !res1[i_1][i_2 + 1]){
                   
                          backTracking(i_1 , i_2 + 1);
                         
                      
                  
                 }
//                   if(0 <= i_1 && i_1 < r  && 0 <= i_2 - 1 && i_2 - 1 < c  && rew[i_1][i_2 - 1]){
                  
//                           backTracking(rew, i_1 , i_2 - 1);
// //                           rew[i_1][i_2 - 1] = true; 
                   
//                  }
            }
            return ;
            
      
    }
};