1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include<iostream>

using namespace std;

#define d(a) cout<<#a<<" = "<<a<<"\n";

int poss(int poziom,int pozycja){

    int l,p;//ostatni pozim na ktoeym l/p koniec nie wypada

    p=pozycja;

    l=poziom-(pozycja-1);

    int ile=0;

    int c=min(poziom-l,poziom-p)+1;

    int m=max(poziom-l,poziom-p)+1;

    int r=min(l,p)-1;

    ile+=((c*(c+1))/2);

    ile+=((m-c)*c);

    ile+=((r*(r+1))/2);



    //cout<<"\ni,j ="<<poziom<<" , "<<pozycja<<"\n";

    //d(l);d(p);d(c);d(m);d(r);d(ile);

    return ile;

}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,k;

    cin>>n>>k;

    long long odp=1LL<<60LL;

    for(int i=1;i<=n;i++){

       // d(i);

        for(int j=1;j<=i;j++){

            long long a;

            cin>>a;

            if(k>=poss(i,j)){

                odp=min(odp,a);

            }

        }

    }

    cout<<odp;

}

/*

 1      1

 2      1,2

 3      1,2,3

 4      1,2,3,4

 */