#include <stdio.h>

//int min(int x, int y){return &(&((char*)x)[y])[-sizeof(union{char X[x],Y[y];})];}

//int min1(int x, int y){return ~sizeof(union{char X[~x],Y[~y];});}

#define min(x,y) &( &((char*)x)[y] )[-sizeof(union{char X[x], Y[y];})]
int main(void) 
{
	printf("%d \n", min (0,3));
	printf("%d \n", min (3,0));
	printf("%d \n", min (1,12));
	printf("%d \n", min (12,12));
	printf("%d \n", min (12,1));
	printf("%d \n", min (345,21444));
	printf("%d \n", min (255,21444));		
	return 0;
}
