#include <stdio.h>

#define LIST_OF_ENUM_IDS \
    X(A, 0) \
    X(B, 1) \
    X(C, 2) \
    X(D, 4) \
    X(E, 6) \
    X(F, 8) \
    X(G, 10)

#define X(id, val) \
  id = val,

typedef enum
{
  LIST_OF_ENUM_IDS
} my_enum;

#undef X

#define X(id, val) id##_impl_helper,

enum my_enum_impl_helper__ {
  LIST_OF_ENUM_IDS
  MY_ENUM_MAX_ELEMENTS
};

#undef X

int main(void) {
	printf("%d %d %d", A, G, MY_ENUM_MAX_ELEMENTS);
	return 0;
}
