#include <stdbool.h>
#include <stdint.h>
#include <inttypes.h>

// http://stackoverflow.com/questions/7469915
#define IS_UNSIGNED(v) (v >= 0 && ~v >= 0)

#define F(v) f(IS_UNSIGNED(v), v, v)

void f (bool is_unsigned, intmax_t s, uintmax_t u)
{
	if (is_unsigned)
	{
		printf("%d %" PRIuMAX "\n", is_unsigned, u);
	}
	else
	{
		printf("%d %" PRIdMAX "\n", is_unsigned, s);
	}
}

int main (void)
{
	F(INTMAX_MAX);
	F(UINTMAX_MAX);

	return 0;
}