For this Question: Given a rectangular tile of dimensions N*M, you have to divide the tile into three rectangular pieces such that the three pieces can be combined (without breaking any piece) to form the original tile. Let the area of the three pieces be a, b and c. You have to find the minimum value of (max(a, b, c) - min(a, b, c)).First Line of input contains two integers N and M.

Constraints 
 
1 <= N, M <= 100000Output a single integer which is the minimum possible value of (max(a, b, c) - min(a, b, c)).Sample Input 1 
3 5

Sample Output 1 
0

Explaination : we can break tile into (1*5) (1*5) (1*5)

Sample Input 2 
4 5

Sample Output 2 
2

Explaination : we can break tile into (4*2) (2*3) (2*3), I have written this Solution Code: #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define VV vector
#define pb push_back
#define bitc  __builtin_popcountll
#define m_p make_pair
#define infi 1e18+1
#define eps 0.000000000001
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);
string char_to_str(char c){string tem(1,c);return tem;}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
template<class T>//usage rand<long long>()
T rand() {
    return uniform_int_distribution<T>()(rng);
}
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
 
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> oset;
// string to integer stoi()
// string to long long stoll()
// string.substr(position,length);
// integer to string to_string();
 
//////////////
auto clk=clock();
#define all(x) x.begin(),x.end()
#define se second
#define fi first
#define sz(x) ((long long)x.size())
#define int long long  
#define f80 __float128
#define pii pair<int,int>
/////////////

signed main()
{
	fastio;
	
long long H, W;
  cin >> H >> W;
  long long ans1, ans2, ans3, ans4, ans5, ans6;
  ans1=H*((W+2)/3-W/3);
  ans2=W*((H+2)/3-H/3);
  ans3 = max({(H+2)/3*W,(H-(H+2)/3)*(W/2),(H-(H+2)/3)*((W+1)/2)})
  - min({(H+2)/3*W,(H-(H+2)/3)*(W/2),(H-(H+2)/3)*((W+1)/2)});
  ans4 = max({H/3*W,(H-H/3)*(W/2),(H-H/3)*((W+1)/2)})
  - min({H/3*W,(H-H/3)*(W/2),(H-H/3)*((W+1)/2)});
  ans5 = max({(W+2)/3*H,(W-(W+2)/3)*(H/2),(W-(W+2)/3)*((H+1)/2)})
  - min({(W+2)/3*H,(W-(W+2)/3)*(H/2),(W-(W+2)/3)*((H+1)/2)});
  ans6 = max({W/3*H,(W-W/3)*(H/2),(W-W/3)*((H+1)/2)})
  - min({W/3*H,(W-W/3)*(H/2),(W-W/3)*((H+1)/2)});

  cout << min({ans1,ans2,ans3,ans4,ans5,ans6}) << endl;

}, In this Programming Language: C++, Now tell me if this Code is compilable or not?