#include <stdarg.h>

void abort(void);
void exit(int);

struct tiny {
    int c;
};

void f(int n, ...) {
    struct tiny x;
    int i;

    va_list ap;
    va_start(ap, n);
    for (i = 0; i < n; i++) {
        x = va_arg(ap, struct tiny);
        if (x.c != i + 10)
            abort();
    }
    {
        long x = va_arg(ap, long);
        if (x != 123)
            abort();
    }
    va_end(ap);
}

int main(void) {
    struct tiny x[3];
    x[0].c = 10;
    x[1].c = 11;
    x[2].c = 12;
    f(3, x[0], x[1], x[2], (long)123);
    exit(0);
}
