// // #include <iostream>
// // // g++ hello.cpp && ./a.out
// // using namespace std;


// // int main() {
// // 	char a[] ="python";
// // 	char b[7];
// // 	int i,j;
// // 	for (i = 0; a[i] != '\0'; i++) {

// // 	}
// // 	i = i - 1;
// // 	for(j = 0; i >= 0; i--,j++) {
// // 		b[j] = a[i];
// // 	}
// // 	b[j] = '\0'; 
// // 	cout <<b;
// // 	return 0;
// // }



// #include <iostream>
// // g++ hello.cpp && ./a.out
// using namespace std;

// class node {
// public:
// 	int data;
// 	node*next;

// 	node(int d) {
// 		data = d;
// 		next = NULL;
// 	}

// };

// class linkedList {
// public:
// 	node*head;

// 	linkedList() {
// 		head = NULL;
// 	}

// 	void insertAtHead(int d) {
// 		node*nn = new node(d);
// 		nn->next = head;
// 		head = nn;
// 	}

// 	void insertAtTail(int d) {
// 		if (head == NULL) {
// 			insertAtHead(d);
// 			return;
// 		}
// 		node*temp = head;
// 		while(temp->next != NULL) {
// 			temp = temp->next;
// 		}
// 		node*nn = new node(d);
// 		temp->next = nn;
// 	}

// 	void insertAtPosition(int d) {
// 		if(head == NULL) {
// 			return;
// 		}
// 		node*temp = head;
// 		while(temp != NULL) {
// 			// if(temp->data == d) {
// 			// 	node *n = new node(d);

// 			// }
// 			if(temp->next != NULL && temp->next->data > d) {
// 				node *nn = new node(d);
// 				nn->next = temp->next;
// 				temp->next = nn;
// 				break;
// 			}
// 			temp = temp->next;
// 		}
// 	}

// 	void deleteDupli() {
// 		if (head == NULL) {
// 			return;
// 		}
// 		node *temp = head;
// 		while(temp != NULL && temp->next != NULL) {
// 			if (temp->data == temp->next->data){
// 				node* nn = temp->next;
// 				temp->next = temp->next->next;
// 				delete nn;
// 			}
// 			temp = temp->next; 
// 		}
// 	}

// 	void reverse() {
// 		if (head == NULL) {
// 			return;
// 		}
// 		node *temp = head;
// 		// node *p = NULL;
// 		// node *q = NULL;
// 		// while(temp != NULL) {
// 		// 	p = q;
// 		// 	q = temp;
// 		// 	temp = temp->next;
// 		// 	q-> next = p;
// 		// }

// 		node *p = NULL;
// 		node *n = NULL;
// 		while(temp != NULL) {
// 			n = temp->next;
// 			temp->next = p;
// 			p = temp;
// 			temp = n;
// 			// temp = temp->next;
// 			// q-> next = p;
// 		}
// 		head = p;
// 	}

// 	void merge(node *p, node*q) {
// 		if (p == NULL) {
// 			return q;
// 		}
// 		if (q == NULL) {
// 			return p;
// 		}
// 		node *x = new node(d);
// 		if ()
// 		while(q != NULL && p != NULL) {

// 		}
// 	}


// 	void print() {
// 		node *temp = head;
// 		while(temp != NULL) {
// 			cout << temp->data <<" ";
// 			temp = temp->next;
// 		}
// 		cout <<endl;
// 	}
// };


// int main() {
// 	linkedList ll;
// 	int t;
// 	int n,x;
// 	cin >> t;
// 	while(t--) {
// 		cin >> n;
// 		for (int i = 0; i < n; i++) {
// 			cin >> x;
// 			ll.insertAtTail(x);
// 		}
// 	}
// 	// ll.insertAtHead(1);
// 	// ll.insertAtHead(2);
// 	// ll.insertAtHead(2);
// 	// ll.insertAtHead(3);
// 	// ll.insertAtHead(4);
// 	// ll.insertAtHead(5);
// 	// ll.deleteDupli();
// 	// ll.reverse();
// 	// ll.insertAtPosition(6);
// 	ll.print();
// 	return 0;
// } 


#include <iostream>
#include <algorithm>
#include <bits/stdc++.h>
// g++ hello.cpp && ./a.out
using namespace std;

void minn(int N, int arr[], int K ) {
	sort(arr,arr + N);
	int ans = 0;
	int i;
	// for (i= 0; i < N; i++) {
	// 	cout << arr[i];
	// }
	for (i = 0; i < K; i++) {
		ans = ans + arr[i];
	}
	cout << ans;
}
	


int main() {
	int N,K,p;
	cin >> N;
	cin >> K;
	int arr[N];
	for (int i = 0; i < N; i++) {
		cin >> arr[i];
		//cout << arr[i];
	}
	minn(N, arr, K);
	return 0;
}


Measured memory_bytes: 3564