using System;
using System.Collections.Generic;
using System.Linq;

namespace carobnjak
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Broj napitaka? ");//5 2 3 1 6 9 2 9
            int N = int.Parse(Console.ReadLine());
            Console.Write("Koliko napitaka uzima u obzir? ");
            int K = int.Parse(Console.ReadLine());
            int[] glavniNiz = PopuniNiz(N);
            IspisiNiz(glavniNiz);
            int[] maximumNiz = NadjiMaxuNizu(K, glavniNiz);
            IspisiNiz(maximumNiz);
            int minimumBroj = NadjiMinuOstatkuNiza(K, maximumNiz);
            KonacnoResenje(minimumBroj, maximumNiz);
        }
        static int[] PopuniNiz(int N)
        {
            int[] niz = new int[N];
            Random rnd = new Random();
            for (int i = 0; i < N; i++)
            {
                niz[i] = rnd.Next(1, 10);
            }
            return niz;
        }
        static void IspisiNiz(int[] niz)
        {
            for (int i = 0; i < niz.Length; i++)
            {
                Console.Write(niz[i] + " ");
            }
            Console.WriteLine();
        }
        static int[] NadjiMaxuNizu(int K, int[] glavniNiz)
        {
            int[] niz = new int[K - 1];
            for (int i = 0; i < K - 1; i++)
            {
                int max = glavniNiz.Max();
                int index = Array.IndexOf(glavniNiz, max);
                niz[i] = max;
                glavniNiz[index] = 0;

            }
            return niz;
        }
        static int NadjiMinuOstatkuNiza(int K, int[] glavniNiz)
        {
            int[] nizIndexa = new int[K - 1];
            for (int i = 0; i < K - 1; i++)
            {
                int max = glavniNiz.Max();
                int index = Array.IndexOf(glavniNiz, max);
                nizIndexa[i] = index;
                glavniNiz[index] = 200001;

            }
            int minIndex = K + 1;
            int maxIndex = -1;
            for (int j = 0; j < K - 1; j++)
            {
                maxIndex = nizIndexa.Max();
                minIndex = nizIndexa.Min();
            }
            for (int k = minIndex; k < maxIndex; k++)
            {
                glavniNiz[k] = 200001;
            }
            int min = glavniNiz.Min();
            Console.WriteLine(min);
            return min;

        }
        static void KonacnoResenje(int min, int[] maximumNiz)
        {
            int ukupno = 0 - min;
            for (int i = 0; i < maximumNiz.Length; i++)
            {
                ukupno += maximumNiz[i];
            }
            Console.WriteLine(ukupno);
        }
    }
}