#include <stdlib.h>
#include <stdio.h>

void a(void);
void b(void);
void c(int, void *);
static void newline(void);

void a (void)
{
  printf("a");
}

void b (void)
{
  printf("b");
}

void c (int code, void *k)
{
  char *x = (char *)k;
  printf("%d%c",code,x[0]);
}

static void newline (void)
{
  printf("\n");
}

int main()
{
  if (atexit(newline) != 0)
    abort();

  if (atexit(a) != 0)
    abort();

  if (atexit(b) != 0)
    abort();

  if (on_exit(c,(void *)"c") != 0)
    abort();

  if (atexit(a) != 0)
    abort();

  exit(0);
}