#include <stdio.h>

struct elemento {
  int val;
  struct elemento *prossimo;
};

void stampa(struct elemento *primo)
{
  struct elemento *p;

  p = primo;
  while (p != NULL) {
    printf("%d ", (*p).val);
    p = (*p).prossimo;
  }
  printf("\n");

}

int main()
{
  struct elemento numero[20];
  struct elemento *primo = NULL;
  unsigned int i, n;

  printf("Quanti numeri vuoi inserire? ");
  scanf("%u", &n);

  i = 0;
  while (i < n) {
    int val;
    struct elemento *attuale;

    printf("Inserisci l'%u-o elemento: ", i);
    scanf("%d", &val);
    attuale = &numero[i];
    (*attuale).val = val;
    if ((primo == NULL) || ((*primo).val > val)) {
      (*attuale).prossimo = primo;
      primo = attuale;
    } else {
      struct elemento *p, *prev;

      p = primo;
      while ((p != NULL) && ((*p).val <= val)) {
        prev = p;
        p = (*p).prossimo;
      }
      (*attuale).prossimo = p;
      (*prev).prossimo = attuale;
    }
    i = i + 1;
  }
  stampa(primo);

  return 0;
}