program cupido;
const
MAXN = 100000;
type elenco=Array[0..MAXN-1] of LongInt;
var
K, N, i , amico : LongInt;
A, B, C, ID : elenco;
Procedure scambia (var a,b: LongInt);
var x:LongInt;
begin
x:=a;
a:=b;
b:=x;
end;
Procedure ordinamento (estremoi,estremos: LongInt; var v : elenco;var u : elenco;var w : elenco;var z : elenco; ordinato:boolean);
var inf, sup, medio:LongInt;
pivot :LongInt;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
scambia(u[inf],u[sup]);
scambia(w[inf],w[sup]);
scambia(z[inf],z[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,u,w,z,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,u,w,z,ordinato);
end;
Procedure ricerca (var t:elenco;amicizia:Longint);
var i,m,inizio,fine: longint;
begin
inizio:=1; fine:=N;
repeat
m:=(inizio + fine) div 2;
if t[m]<=amicizia then inizio:=m+1;
if t[m]>amicizia then fine:=m-1;
until inizio>fine;
if (t[m]<=amicizia) then writeln(m)
else writeln (m-1);
end;
begin
{
uncomment the two following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
ReadLn(N);
for i:=1 to N do
ReadLn(ID[i], A[i], B[i], C[i]);
K := 0;
ordinamento (1,N,ID,A,B,C, true);
for i:=1 to N do writeln(ID[i],' ',a[i],' ',B[i],' ',C[i]);
amico:=3;
ricerca (ID,amico);
WriteLn(K);
end.
cHJvZ3JhbSBjdXBpZG87Cgpjb25zdAogICAgTUFYTiA9IDEwMDAwMDsKdHlwZSBlbGVuY289QXJyYXlbMC4uTUFYTi0xXSBvZiBMb25nSW50Owp2YXIKICAgIEssIE4sIGkgLCBhbWljbyAgICA6IExvbmdJbnQ7CiAgICBBLCBCLCBDLCBJRCA6IGVsZW5jbzsKICAgIApQcm9jZWR1cmUgc2NhbWJpYSAodmFyIGEsYjogTG9uZ0ludCk7CnZhciB4OkxvbmdJbnQ7CmJlZ2luCiAgIHg6PWE7CiAgIGE6PWI7CiAgIGI6PXg7CmVuZDsgIApQcm9jZWR1cmUgb3JkaW5hbWVudG8gKGVzdHJlbW9pLGVzdHJlbW9zOiBMb25nSW50OyB2YXIgdiA6IGVsZW5jbzt2YXIgdSA6IGVsZW5jbzt2YXIgdyA6IGVsZW5jbzt2YXIgeiA6IGVsZW5jbzsgb3JkaW5hdG86Ym9vbGVhbik7CnZhciBpbmYsIHN1cCwgbWVkaW86TG9uZ0ludDsKICAgIHBpdm90IDpMb25nSW50OwpiZWdpbgogICAgaW5mOj1lc3RyZW1vaTsKICAgIHN1cDo9ZXN0cmVtb3M7CiAgICBtZWRpbzo9IChlc3RyZW1vaStlc3RyZW1vcykgZGl2IDI7CiAgICBwaXZvdDo9dlttZWRpb107CiAgICByZXBlYXQKICAgICAgaWYgKG9yZGluYXRvKSB0aGVuCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdoaWxlICh2W2luZl08cGl2b3QpIGRvICBpbmY6PWluZisxOwogICAgICAgICAgICB3aGlsZSAodltzdXBdPnBpdm90KSBkbyAgc3VwOj1zdXAtMTsKICAgICAgICAgZW5kOwogICAgICBpZiBpbmY8PXN1cCB0aGVuCiAgICAgICBiZWdpbgogICAgICAgICBzY2FtYmlhKHZbaW5mXSx2W3N1cF0pOwogICAgICAgICBzY2FtYmlhKHVbaW5mXSx1W3N1cF0pOwogICAgICAgICBzY2FtYmlhKHdbaW5mXSx3W3N1cF0pOwogICAgICAgICBzY2FtYmlhKHpbaW5mXSx6W3N1cF0pOwogICAgICAgICBpbmY6PWluZisxOwogICAgICAgICBzdXA6PXN1cC0xOwogICAgICAgZW5kOwogICAgdW50aWwgaW5mPnN1cDsKICAgIGlmIChlc3RyZW1vaTxzdXApIHRoZW4gb3JkaW5hbWVudG8oZXN0cmVtb2ksc3VwLHYsdSx3LHosb3JkaW5hdG8pOwogICAgaWYgKGluZjxlc3RyZW1vcykgdGhlbiBvcmRpbmFtZW50byhpbmYsZXN0cmVtb3Msdix1LHcseixvcmRpbmF0byk7CmVuZDsKClByb2NlZHVyZSByaWNlcmNhICh2YXIgdDplbGVuY287YW1pY2l6aWE6TG9uZ2ludCk7IAogIHZhciBpLG0saW5pemlvLGZpbmU6IGxvbmdpbnQ7CiAgICAgIAogYmVnaW4gIAogICBpbml6aW86PTE7IGZpbmU6PU47CiAgIHJlcGVhdAogICAgICBtOj0oaW5pemlvICsgZmluZSkgZGl2IDI7CiAgICAgIGlmIHRbbV08PWFtaWNpemlhIHRoZW4gaW5pemlvOj1tKzE7CiAgICAgIGlmIHRbbV0+YW1pY2l6aWEgdGhlbiBmaW5lOj1tLTE7CiAgICB1bnRpbCBpbml6aW8+ZmluZTsKICAgCiAgICBpZiAodFttXTw9YW1pY2l6aWEpIHRoZW4gd3JpdGVsbihtKQogICAgICAgICAgICAgICAgICAgICBlbHNlIHdyaXRlbG4gKG0tMSk7CiAgICAgCiBlbmQ7CmJlZ2luCnsKICAgIHVuY29tbWVudCB0aGUgdHdvIGZvbGxvd2luZyBsaW5lcyBpZiB5b3Ugd2FudCB0byByZWFkL3dyaXRlIGZyb20gZmlsZXMKICAgIGFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsKfQoKICAgIFJlYWRMbihOKTsKCiAgICBmb3IgaTo9MSB0byBOIGRvCiAgICAgICAgUmVhZExuKElEW2ldLCBBW2ldLCBCW2ldLCBDW2ldKTsKCiAgICBLIDo9IDA7CgogICAgb3JkaW5hbWVudG8gKDEsTixJRCxBLEIsQywgdHJ1ZSk7CiAgICBmb3IgaTo9MSB0byBOIGRvIHdyaXRlbG4oSURbaV0sJyAnLGFbaV0sJyAnLEJbaV0sJyAnLENbaV0pOyAKICAgIGFtaWNvOj0zOwogICAgcmljZXJjYSAoSUQsYW1pY28pOwogICAgIAoKICAgIFdyaXRlTG4oSyk7CgplbmQuCg==