#include <stdio.h>
inline void logMsg(const char*fmt, int n1,int n2,int n3,int n4,int n5,int n6)
{
printf(fmt
,n1
,n2
,n3
,n4
,n5
,n6
); }
#define LOGMSG1(fmt,n1) logMsg(fmt,(int)n1,0,0,0,0,0)
#define LOGMSG2(fmt,n1,n2) logMsg(fmt,(int)n1,(int)n2,0,0,0,0)
#define LOGMSG3(fmt,n1,n2,n3) logMsg(fmt,(int)n1,(int)n2,(int)n3,0,0,0)
#define LOGMSG4(fmt,n1,n2,n3,n4) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,0,0)
#define LOGMSG5(fmt,n1,n2,n3,n4,n5) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,(int)n5,0)
#define LOGMSG6(fmt,n1,n2,n3,n4,n5,n6) logMsg(fmt,(int)n1,(int)n2,(int)n3,(int)n4,(int)n5,(int)n6)
#define GET_NAME(_1,_2,_3,_4,_5,_6,NAME,...) NAME
#define TRACE(fmt, ...) GET_NAME(__VA_ARGS__,LOGMSG6,LOGMSG5,LOGMSG4,LOGMSG3,LOGMSG2,LOGMSG1)(fmt,__VA_ARGS__)
int main(void) {
logMsg("%d,%d,%d,%d,%d,%d\n",1,2,3,4,5,6);
logMsg("%d,%d,%d,%d,%d\n", 1,2,3,4,5,0);
logMsg("%d,%d,%d,%d\n", 1,2,3,4,0,0);
logMsg("%d,%d,%d\n", 1,2,3,0,0,0);
logMsg("%d,%d\n", 1,2,0,0,0,0);
logMsg("%d\n", 1,0,0,0,0,0);
TRACE("%d,%d,%d,%d,%d,%d\n", 1,2,3,4,5,6);
TRACE("%d,%d,%d,%d,%d\n", 1,2,3,4,5);
TRACE("%d,%d,%d,%d\n", 1,2,3,4);
TRACE("%d,%d,%d\n", 1,2,3);
TRACE("%d,%d\n", 1,2);
TRACE("%d\n", 1);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbmxpbmUgdm9pZCBsb2dNc2coY29uc3QgY2hhcipmbXQsIGludCBuMSxpbnQgbjIsaW50IG4zLGludCBuNCxpbnQgbjUsaW50IG42KQp7CglwcmludGYoZm10LG4xLG4yLG4zLG40LG41LG42KTsKfQoKI2RlZmluZSBMT0dNU0cxKGZtdCxuMSkgICAgICAgICAgICAgICAgbG9nTXNnKGZtdCwoaW50KW4xLDAsMCwwLDAsMCkKI2RlZmluZSBMT0dNU0cyKGZtdCxuMSxuMikgICAgICAgICAgICAgbG9nTXNnKGZtdCwoaW50KW4xLChpbnQpbjIsMCwwLDAsMCkKI2RlZmluZSBMT0dNU0czKGZtdCxuMSxuMixuMykgICAgICAgICAgbG9nTXNnKGZtdCwoaW50KW4xLChpbnQpbjIsKGludCluMywwLDAsMCkKI2RlZmluZSBMT0dNU0c0KGZtdCxuMSxuMixuMyxuNCkgICAgICAgbG9nTXNnKGZtdCwoaW50KW4xLChpbnQpbjIsKGludCluMywoaW50KW40LDAsMCkKI2RlZmluZSBMT0dNU0c1KGZtdCxuMSxuMixuMyxuNCxuNSkgICAgbG9nTXNnKGZtdCwoaW50KW4xLChpbnQpbjIsKGludCluMywoaW50KW40LChpbnQpbjUsMCkKI2RlZmluZSBMT0dNU0c2KGZtdCxuMSxuMixuMyxuNCxuNSxuNikgbG9nTXNnKGZtdCwoaW50KW4xLChpbnQpbjIsKGludCluMywoaW50KW40LChpbnQpbjUsKGludCluNikKI2RlZmluZSBHRVRfTkFNRShfMSxfMixfMyxfNCxfNSxfNixOQU1FLC4uLikgTkFNRQojZGVmaW5lIFRSQUNFKGZtdCwgLi4uKSBHRVRfTkFNRShfX1ZBX0FSR1NfXyxMT0dNU0c2LExPR01TRzUsTE9HTVNHNCxMT0dNU0czLExPR01TRzIsTE9HTVNHMSkoZm10LF9fVkFfQVJHU19fKQoKaW50IG1haW4odm9pZCkgewoJbG9nTXNnKCIlZCwlZCwlZCwlZCwlZCwlZFxuIiwxLDIsMyw0LDUsNik7Cglsb2dNc2coIiVkLCVkLCVkLCVkLCVkXG4iLCAgIDEsMiwzLDQsNSwwKTsKCWxvZ01zZygiJWQsJWQsJWQsJWRcbiIsICAgICAgMSwyLDMsNCwwLDApOwoJbG9nTXNnKCIlZCwlZCwlZFxuIiwgICAgICAgICAxLDIsMywwLDAsMCk7Cglsb2dNc2coIiVkLCVkXG4iLCAgICAgICAgICAgIDEsMiwwLDAsMCwwKTsKCWxvZ01zZygiJWRcbiIsICAgICAgICAgICAgICAgMSwwLDAsMCwwLDApOwoKCVRSQUNFKCIlZCwlZCwlZCwlZCwlZCwlZFxuIiwgMSwyLDMsNCw1LDYpOwoJVFJBQ0UoIiVkLCVkLCVkLCVkLCVkXG4iLCAgICAxLDIsMyw0LDUpOwoJVFJBQ0UoIiVkLCVkLCVkLCVkXG4iLCAgICAgICAxLDIsMyw0KTsKCVRSQUNFKCIlZCwlZCwlZFxuIiwgICAgICAgICAgMSwyLDMpOwoJVFJBQ0UoIiVkLCVkXG4iLCAgICAgICAgICAgICAxLDIpOwoJVFJBQ0UoIiVkXG4iLCAgICAgICAgICAgICAgICAxKTsKCXJldHVybiAwOwp9Cg==