1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  4. #define endl "\n"
  5. #define int long long
  6.  
  7. #define db(...) ZZ(#__VA_ARGS__, __VA_ARGS__)
  8. template <typename Arg1> void ZZ(const char* name, Arg1&& arg1){std::cerr << name << " = " << arg1 << endl;}
  9. template <typename Arg1, typename... Args>void ZZ(const char* names, Arg1&& arg1, Args&&... args)
  10. {
  11. const char* comma = strchr(names + 1, ',');
  12. std::cerr.write(names, comma - names) << " = " << arg1;
  13. ZZ(comma, args...);
  14. }
  15.  
  16. int32_t main()
  17. {
  18. IOS;
  19. for(int i=1;i<=2;i++)
  20. {
  21. for(int j=1;j<=2;j++)
  22. {
  23. for(char ch='a';ch<='b';ch++)
  24. {
  25. db(i);
  26. db(i, j);
  27. db(i, j, ch);
  28. }
  29. }
  30. }
  31. return 0;
  32. }
  33.  
  34. /* Output:
  35. i = 1
  36. i = 1, j = 1
  37. i = 1, j = 1, ch = a
  38. i = 1
  39. i = 1, j = 1
  40. i = 1, j = 1, ch = b
  41. i = 1
  42. i = 1, j = 2
  43. i = 1, j = 2, ch = a
  44. i = 1
  45. i = 1, j = 2
  46. i = 1, j = 2, ch = b
  47. i = 2
  48. i = 2, j = 1
  49. i = 2, j = 1, ch = a
  50. i = 2
  51. i = 2, j = 1
  52. i = 2, j = 1, ch = b
  53. i = 2
  54. i = 2, j = 2
  55. i = 2, j = 2, ch = a
  56. i = 2
  57. i = 2, j = 2
  58. i = 2, j = 2, ch = b
  59. */