#include <stdio.h>
#define DBG_LEVEL 3
#define DBG_LOG_EMPTY do {} while (0)
#define DBG_LOG_MSG(args) do { printf args; } while (0)
#if DBG_LEVEL >= 3
#define DBG_LOG_4(args) DBG_LOG_MSG(args)
#define DBG_LOG_3(args) DBG_LOG_MSG(args)
#define DBG_LOG_2(args) DBG_LOG_EMPTY
#define DBG_LOG_1(args) DBG_LOG_EMPTY
#elif DBG_LEVEL >= 2
#define DBG_LOG_4(args) DBG_LOG_MSG(args)
#define DBG_LOG_3(args) DBG_LOG_MSG(args)
#define DBG_LOG_2(args) DBG_LOG_MSG(args)
#define DBG_LOG_1(args) DBG_LOG_EMPTY
#elif DBG_LEVEL >= 1
#define DBG_LOG_4(args) DBG_LOG_MSG(args)
#define DBG_LOG_3(args) DBG_LOG_MSG(args)
#define DBG_LOG_2(args) DBG_LOG_MSG(args)
#define DBG_LOG_1(args) DBG_LOG_MSG(args)
#else
#define DBG_LOG_4(args) DBG_LOG_EMPTY
#define DBG_LOG_3(args) DBG_LOG_EMPTY
#define DBG_LOG_2(args) DBG_LOG_EMPTY
#define DBG_LOG_1(args) DBG_LOG_EMPTY
#endif
#define DBG_LOG(level, args) DBG_LOG_##level(args)
int main(void) {
// your code goes here
DBG_LOG(1, ("level %d\n", 1));
DBG_LOG(2, ("level %d\n", 2));
DBG_LOG(3, ("level %d\n", 3));
DBG_LOG(4, ("level %d\n", 4));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIERCR19MRVZFTCAzCgojZGVmaW5lIERCR19MT0dfRU1QVFkgZG8ge30gd2hpbGUgKDApCiNkZWZpbmUgREJHX0xPR19NU0coYXJncykgZG8geyBwcmludGYgYXJnczsgfSB3aGlsZSAoMCkKCiNpZiBEQkdfTEVWRUwgPj0gMwojZGVmaW5lIERCR19MT0dfNChhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZGVmaW5lIERCR19MT0dfMyhhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZGVmaW5lIERCR19MT0dfMihhcmdzKSBEQkdfTE9HX0VNUFRZCiNkZWZpbmUgREJHX0xPR18xKGFyZ3MpIERCR19MT0dfRU1QVFkKI2VsaWYgREJHX0xFVkVMID49IDIKI2RlZmluZSBEQkdfTE9HXzQoYXJncykgREJHX0xPR19NU0coYXJncykKI2RlZmluZSBEQkdfTE9HXzMoYXJncykgREJHX0xPR19NU0coYXJncykKI2RlZmluZSBEQkdfTE9HXzIoYXJncykgREJHX0xPR19NU0coYXJncykKI2RlZmluZSBEQkdfTE9HXzEoYXJncykgREJHX0xPR19FTVBUWQojZWxpZiBEQkdfTEVWRUwgPj0gMQojZGVmaW5lIERCR19MT0dfNChhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZGVmaW5lIERCR19MT0dfMyhhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZGVmaW5lIERCR19MT0dfMihhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZGVmaW5lIERCR19MT0dfMShhcmdzKSBEQkdfTE9HX01TRyhhcmdzKQojZWxzZQojZGVmaW5lIERCR19MT0dfNChhcmdzKSBEQkdfTE9HX0VNUFRZCiNkZWZpbmUgREJHX0xPR18zKGFyZ3MpIERCR19MT0dfRU1QVFkKI2RlZmluZSBEQkdfTE9HXzIoYXJncykgREJHX0xPR19FTVBUWQojZGVmaW5lIERCR19MT0dfMShhcmdzKSBEQkdfTE9HX0VNUFRZCiNlbmRpZgoKI2RlZmluZSBEQkdfTE9HKGxldmVsLCBhcmdzKSBEQkdfTE9HXyMjbGV2ZWwoYXJncykKCmludCBtYWluKHZvaWQpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQoJREJHX0xPRygxLCAoImxldmVsICVkXG4iLCAxKSk7CglEQkdfTE9HKDIsICgibGV2ZWwgJWRcbiIsIDIpKTsKCURCR19MT0coMywgKCJsZXZlbCAlZFxuIiwgMykpOwoJREJHX0xPRyg0LCAoImxldmVsICVkXG4iLCA0KSk7CglyZXR1cm4gMDsKfQo=