#include <iostream>
using namespace std;
struct kab {
int k, a, b;
};
const int MAX_K = 1;
const int MAX_A = 3;
const int MAX_B = 3;
kab increment(kab obj) {
obj.b = (obj.b + 1) % (MAX_B + 1);
if(obj.b == 0) {
obj.a = (obj.a + 1) % (MAX_A + 1);
if(obj.a == 0) {
obj.k++;
}
}
// Ensure a != b by incrementing again if they are
if(obj.a == obj.b) {
return increment(obj);
}
return obj;
}
int main() {
kab vals;
vals.k = vals.a = 0;
vals.b = 1;
while(vals.k <= MAX_K) {
kab vals2 = increment(vals);
while(vals2.k <= MAX_K) {
kab vals3 = increment(vals2);
while(vals3.k <= MAX_K) {
std::cout << "k: " << vals.k << " a: " << vals.a << " b: " << vals.b << std::endl;
std::cout << "k: " << vals2.k << " a: " << vals2.a << " b: " << vals2.b << std::endl;
std::cout << "k: " << vals3.k << " a: " << vals3.a << " b: " << vals3.b << std::endl;
std::cout << std::endl;
vals3 = increment(vals3);
}
vals2 = increment(vals2);
}
vals = increment(vals);
}
return 0;
}