#include <stdio.h>
#include <stdarg.h>

void printf0( const char* format, ... ) {
    va_list args;
    va_start(args, format);
    vprintf(format, args);
    va_end( args );
}

void printf1(const char* format,...) {
  va_list args;
  va_start(args, format);
  
  va_list args2;
  va_copy(args2, args);
  char buf[vsnprintf(NULL, 0, format, args) + 1];

  vsnprintf(buf, sizeof buf, format, args2);
  printf(buf);
  va_end(args);
  va_end(args2);
}

int main()
{
    printf0("Hello, %d!\n", 15);
    printf1("Hello, %d!\n", 15);
    return 0;
}