#include <stdio.h> #include <stdlib.h> typedef struct __LinkedList_ts { int value; struct __LinkedList_ts* next; } LinkedList_ts; LinkedList_ts* LinkedList_new(int value) { LinkedList_ts* result = NULL; result = (LinkedList_ts*)malloc(sizeof(LinkedList_ts)); result->value = value; result->next = NULL; return result; } LinkedList_ts* LinkedList_add(LinkedList_ts* head, int value) { LinkedList_ts* result = NULL; LinkedList_ts* curr = NULL; LinkedList_ts* next = NULL; LinkedList_ts* node = NULL; if (head == NULL) { node = LinkedList_new(value); head = node; } else { for (curr=head; curr!=NULL; curr=curr->next) { next = curr->next; if (value <= curr->value) { if (curr == head) { node = LinkedList_new(value); node->next = head; head = node; break; } else {} } else { if (next == NULL) { node = LinkedList_new(value); curr->next = node; break; } else { if (value <= next->value) { node = LinkedList_new(value); curr->next = node; node->next = next; break; } else {} } } } } result = head; return result; } void LinkedList_free(LinkedList_ts* head) { LinkedList_ts* curr = NULL; LinkedList_ts* node = NULL; if (head != NULL) { for (curr=head; curr!=NULL; curr=node) { node = curr->next; free(curr); } } else {} } int main() { int n, k, i, temp; LinkedList_ts* head = NULL; LinkedList_ts* curr = NULL; scanf("%d %d", &n, &k); for (i=0; i<n; ++i) { scanf("%d", &temp); head = LinkedList_add(head, temp); } for (curr=head,i=0; i<k; ++i,curr=curr->next) { printf("%d ", curr->value); } return 0; }