jiahuimbzuai/CoQuIR huggingface dataset:
//  [python]
import collections
import math
import operator as op
from functools import reduce
import numpy as np
import math
import bisect
import heapq


MOD = 1000000007


def gcd(a, b):
    while b:
        a, b = b, a % b
    return a


def lcm(a, b):
    return a * b // gcd(a, b)


def get_inputs(cast_func=None):
    if cast_func is None:
        return input().split()
    else:
        return list(map(cast_func, input().split()))


def get_input(cast_func=None):
    if cast_func is None:
        return input()
    else:
        return cast_func(input())


def is_prime(n):
    if n == 1:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True


def main():
    H, A = get_inputs(int)


    ans = 0
    while H > 0:
        H -= A
        ans += 1
    print(ans)

    return


if __name__ == '__main__':
    main()
//  [python]
import numpy

H, A = input().split(' ')
H = int(H)
A = int(A)

ans = H // A
if H % A != 0:
    ans = ans + 1

print(ans)
//  [java]
import java.lang.reflect.Array;
import java.util.*;

public class Main {

    static int MOD = 1000000007;


    public static void main(String[] args) {

        //int ans=Integer.MAX_VALUE;
        Scanner sc = new Scanner(System.in);
        int h=sc.nextInt();
        int a =sc.nextInt();
        int ans;
        if(h%a==0)ans=h/a;
        else ans=h/a+1;

        System.out.println(ans);






    }


}
//  [cpp]
#include <bits/stdc++.h>
using namespace std;

int main() {
    int H, A;
    cin >> H >> A;
    cout << (H + A - 1) / A << endl;
    return 0;
}
//  [cpp]
#include <bits/stdc++.h>
using namespace std;


int main(){
    int H,A;
    cin >> H >> A;
    
    if(H%A==0){
        cout << H/A << endl;
    }
    else{
        cout << H/A+1 << endl;
    }

}
//  [c]
#include <stdio.h>
int main(){
	int H,A,x = 0;
	scanf ("%d %d",&H,&A);
	while (H>0) {
		H=H-A;
		x++;
	}
	printf ("%d",x);
}
//  [c]
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define ll long long
#define INF 1<<31-1
#define LNF 9223372036854775807
#define PI 3.14159265358979
#define MIN(x,y) ((x)<(y)?(x):(y))
#define MAX(x,y) ((x)<(y)?(y):(x))
#define FOR(i,a,n) for(i=a;i<n;i++)
#define MOD 1000000007
//#define MOD 998244353
#define NUM 200010
 
void swap(int* a,int* b){int tmp=*a;*a=*b;*b=tmp;}
int abs(int a){if(a<0)return -a;return a;}
int dup(int a,int d){if(a%d==0)return a/d;else return a/d+1;}
int mod(int a,int m){if(a<0)return a%m+m;else return a%m;}

void swapl(ll* a,ll* b){ll tmp=*a;*a=*b;*b=tmp;}
ll absl(ll a){if(a<0)return -a;return a;}
ll dupl(ll a,ll d){if(a%d==0)return a/d;else return a/d+1;}
ll modl(ll a,ll m){if(a<0)return a%m+m;else return a%m;}

ll GCD(ll a,ll b){ll c=1,tmp=MAX(a,b);b=MIN(a,b);a=tmp;while(c!=0){c=a%b;a=b;b=c;}return a;}
ll LCM(ll a,ll b){return a*b/GCD(a,b);}

ll factorial(ll n, ll m) {return n < m ? 1 : n*factorial(n-1, m);}

int upll(const void*a, const void*b){return*(ll*)a<*(ll*)b?-1:*(ll*)a>*(ll*)b?1:0;}
int downll(const void*a, const void*b){return*(ll*)a<*(ll*)b?1:*(ll*)a>*(ll*)b?-1:0;}
void sortup(ll*a,int n){qsort(a,n,sizeof(ll),upll);}
void sortdown(ll*a,int n){qsort(a,n,sizeof(ll),downll);}

int main(){
  ll H, A;
  

  scanf("%lld%lld", &H, &A);

  
    printf("%lld\n", (H+A-1)/A);
  
  
  return 0;
}
//  [c]
#include<stdio.h>

int main () {
	int health, attack;
	scanf("%d %d", &health, &attack);
	health % attack == 0 ? printf("%d\n", health / attack) : printf("%d\n", (health / attack)+1); 
	return 0;
}
//  [javascript]
'use strict'


function Main(input) {
  input = input.trim().split(' ')
  const H = parseInt(input[0])
  const A = parseInt(input[1])

  if (H < A) {
    console.log(1)
    return
  }

  let total = H
  let count = 0
  while(total > 0) {
    total -= A
    count++
  }


  console.log(count)

}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
var output;
var input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
var obj = {
  "list" : input,
  "index" : 0,
  "max" : input.length,
  "next" : function(){
    if(!this.hasNext()){throw "NoSuchElementException:次に要素は無いよ";}
    var returnObj = this.list[this.index];
    this.index++;
    return returnObj;
  },
  "hasNext" : function(){return (this.index < this.max);}
}
Main();
function next(){return obj.next();}
function hasNext(){return obj.hasNext();}
function myout(t){console.log(t);}//standard output
function myerr(t){console.error(t);}//standard error
//[no]要素の扱い。数値型
//不明値、異常時:引数そのまま返す
//1:数値へ変換 2:半角SPで分割 4:半角SPで分割し、数値配列へ
//6:1文字に分割 7:1文字に分割し、数値配列へ
//8:半角SPで結合 9:改行で結合 0:文字なしで結合
function myconv(i,no){try{switch(no){case 1:return parseInt(i);case 2:return i.split(" ");case 4:return i.split(" ").map((a)=>Number(a));case 6:return i.split("");case 7:return i.split("").map((a)=>Number(a));case 8:return i.join(" ");case 9:return i.join("\n");case 0:return i.join("");default:return i;}}catch(e){return i;}}
function Main() {
  var one = myconv(next(),4);
  myout(Math.ceil(one[0] / one[1]));
}
//  [go]
package main

import (
	"bufio"
	"fmt"
	"log"
	"os"
	"strconv"
)

func main()  {
	scanner := bufio.NewScanner(os.Stdin)

	scanner.Split(bufio.ScanWords)

	scanner.Scan()
	H, err := strconv.Atoi(scanner.Text())
	if err != nil {
		log.Fatal(err)
	}

	scanner.Scan()
	A, err := strconv.Atoi(scanner.Text())
	if err != nil {
		log.Fatal(err)
	}

	if i := H % A; i != 0 {
		fmt.Println(H / A + 1)
	} else {
		fmt.Println(H / A)
	}
}
//  [ruby]
require 'set'; require 'prime'
INF=Float::INFINITY
h,a = gets.chomp.split.map(&:to_i)

puts (1.0*h/a).ceil
//  [ruby]
h,a=gets.split.map &:to_i
p (h+a-1)/a
//  [ruby]
require 'set'

class Hash
  def push(key, value)
    self[key] = [] if self[key] == nil
    self[key].push(value)
  end
end

class Array
  def lower_bound(value)
    left = -1;
    right = self.length;
    while left + 1 < right
      mid = left + (right - left) / 2;
      if self[mid] >= value
        right = mid
      else
        left = mid
      end
    end
    right
  end

  def unique
    res = [self.first]
    each_cons(2) do |a, b|
      if a != b
        res.push(b)
      end
    end
    res
  end
end

def get_ints
  gets.split.map(&:to_i)
end

def get_ints_minus_one
  get_ints.map { |x| x - 1 }
end

def get_int
  gets.chomp.to_i
end

H, A = get_ints

puts (H / A) + ((H % A != 0) ? 1 : 0)
//  [rust]
#[allow(unused_imports)]
use itertools::Itertools;
#[allow(unused_imports)]
use num::*;
use proconio::input;
#[allow(unused_imports)]
use proconio::marker::*;
#[allow(unused_imports)]
use std::collections::*;

fn solve() {
    input! {
        h: usize, a: usize
    };

    let res = (h + a - 1) / a;
    println!("{}", res);
}

fn main() {
    std::thread::Builder::new()
        .name("big stack size".into())
        .stack_size(256 * 1024 * 1024)
        .spawn(|| {
            solve();
        })
        .unwrap()
        .join()
        .unwrap();
}
//  [rust]
use proconio::input;

fn main() {
    input! {
        mut h: isize,
        a: isize,
    }
    
    // わざわざループで解いてみる。
    let mut i = 0;
    
    while h > 0 {
        h -= a;
        i += 1;
    }
    
    println!("{}", i);
}
//  [swift]
let input = readLine()!.split(separator: " ").map { Int($0)! }
let H = input[0]
let A = input[1]

var times = H / A
if H - A * times > 0 {
  times += 1
}
print(times)
//  [typescript]
"use strict";

const main = arg => {
  const input = arg.trim().split("\n")[0];
  const H = parseInt(input.split(" ")[0])
  const A = parseInt(input.split(" ")[1])
  console.log(Math.floor((H + A - 1)/ A));
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [typescript]
class AtCoder {
  // 入力系
  input=[];
  input_i=-1;
  n(){
    this.input_i++;
    return Number(this.input[this.input_i]);
  }
  nn(n){
    const a=[];
    for(let i=0;i<n;i++){
      a.push(this.n());
    }
    return a;
  }
  s(){
    this.input_i++;
    return String(this.input[this.input_i]);
  }
  ss(n){
    const a=[];
    for(let i=0;i<n;i++){
      a.push(this.s());
    }
    return a;
  }

  // コンソール
  o(...a:any){
    console.log(...a);
  }

  // Math
  abs(a:number){
    return Math.abs(a);
  }
  min(...a:number[]){
    return Math.min(...a);
  }
  max(...a:number[]){
    return Math.max(...a);
  }
  floor(a:number){
    return Math.floor(a);
  }
  ceil(a:number){
    return Math.ceil(a);
  }
  round(a:number){
    return Math.round(a);
  }

  // ソート
  asc(ar:number[]){
    const t=[...ar];
    ar.sort((a,b)=>{return a-b});
  }
  desc(ar:number[]){
    const t=[...ar];
    ar.sort((a,b)=>{return b-a});
  }

  // 自作
  gcd(...arr):number{
    for(let i=0;i<arr.length-1;i++){
      let [x,y]=[arr[i],arr[i+1]];
      while(y){
        [x,y]=[y,x%y];
      }
      arr[i+1]=x;
    }
    return arr[arr.length-1];
  };
  lcm(...arr):number{
    for(let i=0;i<arr.length-1;i++){
      let [x,y]=[arr[i],arr[i+1]];
      while(y){
        [x,y]=[y,x%y];
      }
      arr[i+1]=arr[i]*arr[i+1]/x;
    }
    return arr[arr.length-1];
  };
  isPrime(n:number):boolean{
    if(n < 2) return false;
    const suq=Math.sqrt(n);
    for(let i=2;i<=suq;i++){
      if(n%i==0){
        return false;
      }
    }return true;
  };
  deduplicate(a:any[]):any[]{
    return Array.from(new Set(a));
  };
}
const o = new AtCoder()
var reader = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout
});
reader.on('line',(line)=> {
  o.input.push(...line.split(/[\s]/));
});

process.stdin.on('end', ()=> {
  o.o(o.ceil(o.n()/o.n()))
});
//  [typescript]
{
  const main = (
    input: string
  ): void | string | number | string[] | number[] => {
    const r = _reader(input)
    const [H, A] = r.nn()

    return Math.ceil(H / A)
  }

  const _reader = (str: string, i = 0) => {
    const lines = str.trim().split('\n')
    const s = () => lines[i++] || ''
    const n = () => Number(s())

    const mn = (v: string[]) => v.map(Number)
    const sp = (v: string) => v.split(' ')
    const ss = () => sp(s())
    const nn = () => mn(ss())
    const nls = () => mn(lines.slice(i))
    const nnls = () => lines.slice(i).map(v => mn(sp(v)))

    return { lines, s, n, ss, nn, nls, nnls }
  }

  const _getInput = () => require('fs').readFileSync('/dev/stdin', 'utf8')
  const _res = main(_getInput())

  if (typeof _res === 'number' || typeof _res === 'string') console.log(_res)
  if (typeof _res === 'object') console.log(_res.join(' '))
}
//  [python]
def merge(l,r,a):
    l1 = len(l)
    r1 = len(r)
    i,j,k = 0,0,0
    while j<l1 and k<r1:
        if l[j]<r[k]:
            a[i] = l[j]
            j+=1
        elif l[j] == r[k]:
            a[i]=l[j]
            j+=1
            global res
            print("NO")
            quit()
            return 0
        else:
            a[i] = r[k]
            k+=1
        i+=1
    while j<l1:
        a[i] = l[j]
        j+=1
        i+=1
    while k<r1:
        a[i] = r[k]
        k+=1
        i+=1
    return a

def mergeSort(a):
    n = len(a)
    if n == 1:
        return a
    else:
        mid = n//2
        left = []
        right = []
        for i in range(mid):
            left.append(a[i])
        for i in range(mid, n):
            right.append(a[i])
        mergeSort(left)
        mergeSort(right)
        merge(left,right,a)
        return a


n = int(input())
a = list(map(int,input().split()))
res = True
s = mergeSort(a)
if res:
    print("YES")
else:
    print("NO")
//  [python]
def merge(l,r,a):
    l1 = len(l)
    r1 = len(r)
    i,j,k = 0,0,0
    while j<l1 and k<r1:
        if l[j]<r[k]:
            a[i] = l[j]
            j+=1
        elif l[j] == r[k]:
            a[i]=l[j]
            j+=1
            global res
            res = False
            return 0
        else:
            a[i] = r[k]
            k+=1
        i+=1
    while j<l1:
        a[i] = l[j]
        j+=1
        i+=1
    while k<r1:
        a[i] = r[k]
        k+=1
        i+=1
    return a

def mergeSort(a):
    n = len(a)
    if n == 1:
        return a
    else:
        mid = n//2
        left = []
        right = []
        for i in range(mid):
            left.append(a[i])
        for i in range(mid, n):
            right.append(a[i])
        mergeSort(left)
        mergeSort(right)
        merge(left,right,a)
        return a


n = int(input())
a = list(map(int,input().split()))
res = True
s = mergeSort(a)
if res:
    print("YES")
else:
    print("NO")
//  [python]
import numpy as np

n=int(input())
a=list(map(int,input().split()))

a=np.sort(np.array(a))
tmp=a[0]
k=0

for i in range(1,n):
  if tmp==a[i]:
    k=1
  else:
    tmp=a[i]
    
if k==0:
  print("YES")
else:
  print("NO")
//  [java]
import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		Integer[] input = new Integer[N];
		for (int i = 0; i < N; i++) {
			input[i] = sc.nextInt();
		}
		Arrays.asList(input).sort((x, y) -> x - y);
		int tmp = input[0];
		boolean res = true;
		for (int i = 1; i < N; i++) {
			if (tmp == input[i]) {
				res = false;
				break;
			}
			tmp = input[i];
		}
		if (res) {
			System.out.print("YES");
		} else {
			System.out.print("NO");
		}
	}
}
//  [java]
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Scanner;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		execute7_2();
	}
	
	

	private static void execute7_2() {
		try (Scanner sc = new Scanner(System.in)) {
			int N = sc.nextInt();

			Long s[] = new Long[N];

			for (int i = 0; i < N; i++) {
				s[i]=sc.nextLong();
			}
			
			Arrays.sort(s, Comparator.reverseOrder());
			

			boolean d=false;
			for (int i = 1; i < N; i++) {
				if(s[i-1].equals(s[i])) {
					d=true;
					break;
				}
			}
			
			if(d) {
				System.out.println("NO");
			} else {
				System.out.println("YES");
			}
			
		}
	}
}
//  [java]
import java.util.*;

public class Main{
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int N = sc.nextInt();
    //ここから4行配列として数列を受け取る
    Integer a[] = new Integer[N];
    for(int i = 0; i < N; i++){
      a[i] = sc.nextInt();
    }
    //配列を降順に並び替える
    Arrays.sort(a, Comparator.reverseOrder());

    for(int i = 1; i < N; i++){
      if(a[i-1].equals(a[i])){
        System.out.println("NO");
        return;
      }
    }
    System.out.println("YES");
    return;
  }
}
//  [cpp]
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;


int main(){
  vector<int> a;
  vector<int>::iterator location;
  int num,N,i;
    cin>>N;
  for(i=0;i<N;i++){
    cin>>num;
	if(binary_search(a.begin(),a.end(),num)){
      break;
    }else{
      location=upper_bound(a.begin(),a.end(),num);
      a.insert(location,num);
    }
  }
  if(i==N){
    cout<<"YES"<<endl;
  }else{
     cout<<"NO"<<endl;
  }
  return 0;
}
//  [cpp]
#include <vector>
#include <iostream>
using namespace std;

int main ()
{
  int n;
  vector<int> v;
  int length = 0;
  cin >> n;
  
  int temp;
  cin >> temp;  
  v.push_back(temp);
  
  for (int i = 1; i < n; i++)
  {
    int x;
    cin >> x;
    auto itr = lower_bound(v.begin(),v.end(),x); 
    if (*itr == x)
    {
      cout << "NO";
      return 0;
    }
    
    v.insert(itr,x);    
  }
  
  cout << "YES";
  return 0;
}
//  [cpp]
#include <stdio.h>
int main(void) {
  int n, a[200000], b[20000],
      bb = 0, c[20000], cc = 0, d[20000], dd = 0, e[20000], ee = 0, f[20000],
      ff = 0, g[20000], gg = 0, h[20000], hh = 0, x[20000], xx = 0, y[20000],
      yy = 0, z[20000], zz = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    // for (int j = 0; j < i; j++) {
    //   if (a[i] == a[j]) {
    //     puts("NO");
    //     return 0;
    //   }
    // }
    if (a[i] % 10 == 0) {
      b[bb] = a[i];
      bb++;
      for (int j = 0; j < bb - 1; j++) {
        if (a[i] == b[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 1) {
      c[cc] = a[i];
      cc++;
      for (int j = 0; j < cc - 1; j++) {
        if (a[i] == c[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 2) {
      d[dd] = a[i];
      dd++;
      for (int j = 0; j < dd - 1; j++) {
        if (a[i] == d[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 3) {
      e[ee] = a[i];
      ee++;
      for (int j = 0; j < ee - 1; j++) {
        if (a[i] == e[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 4) {
      f[ff] = a[i];
      ff++;
      for (int j = 0; j < ff - 1; j++) {
        if (a[i] == f[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 5) {
      g[gg] = a[i];
      gg++;
      for (int j = 0; j < gg - 1; j++) {
        if (a[i] == g[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 6) {
      h[hh] = a[i];
      hh++;
      for (int j = 0; j < hh - 1; j++) {
        if (a[i] == h[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 7) {
      x[xx] = a[i];
      xx++;
      for (int j = 0; j < xx - 1; j++) {
        if (a[i] == x[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 8) {
      y[yy] = a[i];
      yy++;
      for (int j = 0; j < yy - 1; j++) {
        if (a[i] == y[j]) {
          puts("NO");
          return 0;
        }
      }
    }
    if (a[i] % 10 == 9) {
      z[zz] = a[i];
      zz++;
      for (int j = 0; j < zz - 1; j++) {
        if (a[i] == z[j]) {
          puts("NO");
          return 0;
        }
      }
    }
  }
  puts("YES");
  return 0;
}
//  [c]
#include<stdio.h>
#include<stdlib.h>

int main(void){
    static char A[1000000010];
    int  N;
    int num;
    int ans;

    scanf("%d",&N);

    for(int i=0;i<1000000010;i++){
        A[i]=0;
    }

    for(int i=0;i<N;i++){
        scanf("%d",&num);
        A[num]++;
        if(A[num]>1){
            printf("NO");
            return 0;
        }
    }

    printf("YES");

    return 0;
}
//  [c]
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
  int N, i;
  unsigned long A;
  char *IND;
    
  scanf("%d", &N);
  
  IND = (char *)calloc(1000000000, sizeof(char));
  
  for (i = 0; i < N; i++) {
    scanf("%lu", &A);
    
    IND[A]++;
    
    if (IND[A] > 1) {
      puts("NO");
      return 0;
    }
  }
  puts("YES");
  
  return 0;
  
}
//  [c]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main(void) {

	int  N,i;
	long no,size;
	scanf("%d",&N);

    size=(long)pow(10,9);
	char  *A;

	A=(char*)malloc(size);
	if(A==0) return 1;
	memset(A,0x00,size);

	for(i=0;i<N-1;i++) {
		scanf("%ld ",&no);
		if(A[no]){printf("NO");goto END;}
		A[no]=0x01;
	}
	scanf("%ld",&no);
	if(A[no]) printf("NO");
	else      printf("YES");
END:
	 free(A);
	 return 0;
}
//  [javascript]
"use strict"
function main(arg) {
    var data = arg.trim().split("\n")[1].split(" ").map(Number)
    data = data.sort((a,b) => a - b)
    var ans = 'YES'
    for (var i = 1; i < data.length; i++) {
        if (data[i - 1] === data[i]) {
            ans = 'NO'
            break
        }
    }
    console.log(ans)
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [javascript]
var input = require("fs").readFileSync("/dev/stdin", "utf8").trim().split("\n");
var obj = {
  "list" : input,
  "index" : 0,
  "max" : input.length,
  "next" : function(){
    if(!this.hasNext()){throw "NoSuchElementException:次に要素は無いよ";}
    var returnObj = this.list[this.index];
    this.index++;
    return returnObj;
  },
  "hasNext" : function(){return (this.index < this.max);}
}
Main();
function next(){return obj.next();}
function hasNext(){return obj.hasNext();}
function myout(t){console.log(t);}//standard output
function myerr(t){console.error(t);}//standard error
//[no]要素の扱い。数値型
//不明値、異常時:引数そのまま返す　1:数値へ変換
//2:半角SPで分割 4:半角SPで分割し、数値配列へ
//6:1文字で分割  7:1文字で分割し、数値配列へ
//8:半角SPで結合 9:改行で結合 0:文字なしで結合
function myconv(i,no){try{switch(no){case 1:return parseInt(i);case 2:return i.split(" ");case 4:return i.split(" ").map((a)=>Number(a));case 6:return i.split("");case 7:return i.split("").map((a)=>Number(a));case 8:return i.join(" ");case 9:return i.join("\n");case 0:return i.join("");default:return i;}}catch(e){return i;}}
function Main(){
  var N = myconv(next(),1);
  var list = myconv(next(),4);
  var set = new Set();
  for(var i = 0; i < N; i++){
    if(!set.has(list[i])){
       set.add(list[i]);
    }else{
      myout("NO");
      return;
    }
    
  }
  myout("YES");
}
//  [javascript]
"use strict"
function Main(input) {
  input = input.trim().split('\n');
  const N = Number(input[0].trim());
  const A = input[1].trim().split(' ').map(Number);
  
  let map = {};
  let ret = 'YES';
  for(let i=0; i<N; i++){
    map[A[i]] = map[A[i]] ? map[A[i]] + 1 : 1;
  }

  for(let k in map){
    if(map[k] > 1){
      ret = 'NO';
      break;
    }
  }

  console.log(ret);
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [go]
package main

import (
	"fmt"
	"sort"
)

func main() {

	var N int
	fmt.Scanf("%d", &N)

	A := make([]int, N)
	for i := 0; i < N; i++ {
		fmt.Scanf("%d", &A[i])
	}

	sort.Ints(A)
	var flag int = 0
	for i := 0; i < N-1; i++ {
		if A[i] == A[i+1] {
			flag = 1
		}
	}

	if flag == 1 {
		fmt.Println("NO")
	} else {
		fmt.Println("YES")
	}
}
//  [go]
package main

import (
	"fmt"
	"sort"
)

func main() {
	var N int
	fmt.Scan(&N)
	A := make([]int, N)
	for i := range A {
		fmt.Scan(&A[i])
	}
	sort.Slice(A, func(i, j int) bool { return A[i] < A[j] })
	for i := 1; i < N; i++ {
		if A[i] == A[i-1] {
			fmt.Println("NO")
			return
		}
	}
	fmt.Println("YES")
}
//  [go]
package main

import (
	"fmt"
)

func main() {
	var n int
	fmt.Scanf("%d", &n)
	a := make([]bool, 1000000001)
	isPairWise := true
	for i := 0; i < n; i++ {
		var next int
		fmt.Scanf("%d", &next)
		if a[next] {
			isPairWise = false
		} else {
			a[next] = true
		}
	}
	if isPairWise {
		fmt.Println("YES")
	} else {
		fmt.Println("NO")
	}
}
//  [ruby]
n = gets.to_i
a = gets.split.map(&:to_i)
b = {}
ans = 'YES'
for i in 0..n - 1
  if b[a[i].to_s.to_sym]
    ans = 'NO'
    break
  else
    b[a[i].to_s.to_sym] = 1
  end
end
puts ans
//  [ruby]
n = gets.to_i
ary =gets.chomp.split(' ').map(&:to_i)

def mergesort(a,b)
    i=0
    j=0
    new_ary = []
    flag = true
    while flag
        if(i<a.size)&&(j>=b.size||a[i]<=b[j])
            new_ary << a[i]
            i+=1
        elsif(j<b.size)&&(i>=a.size||b[j]<a[i])
            new_ary << b[j]
            j+=1
        else
            flag = false
        end
    end
    return new_ary
end
def merge(a)
    if a.size==1
        return a
    end
    ary1 = merge(a[0...(a.size/2)])
    ary2 = merge(a[(a.size/2)..-1])
    return mergesort(ary1,ary2)
end

ary = merge(ary)
ans = "YES"
(ary.size-1).times do |a|
    if ary[a]==ary[a+1]
        ans = "NO"
        break
    end
end

puts ans
//  [ruby]
n = gets.to_i
a = gets.split.map(&:to_i).sort_by{|x| x}

f = 0
a.length.times do |i|
  if a[i] == a[i+1]
    print 'NO'
    f = 1
    break
  end
end

print 'YES' if f == 0
//  [rust]
use std::io::*;
use std::str::FromStr;

pub fn read<T: FromStr>() -> T {
    let stdin = stdin();
    let stdin = stdin.lock();
    let token: String = stdin
        .bytes()
        .map(|c| c.expect("failed to read char") as char)
        .skip_while(|c| c.is_whitespace())
        .take_while(|c| !c.is_whitespace())
        .collect();
    token.parse().ok().expect("failed to parse token")
}

pub fn read_n<T: FromStr>(n: usize) -> Vec<T> {
    read_n_logic::<T>(n, vec![])
}

pub fn read_n_logic<T: FromStr>(n: usize, mut a: Vec<T>) -> Vec<T> {
    match n {
        0 => a,
        _ => {
            a.push(read::<T>());
            read_n_logic(n - 1, a)
        }
    }
}
use std::cmp::{max, min};

fn main() {
    let n: usize = read();
    let a: Vec<usize> = read_n(n);
    let mut b: Vec<bool> = vec![false; 1_000_000_000];
    let mut ans: String = "YES".to_string();

    for i in 0..a.len() {
        let ai = a[i];
        if b[ai] == false {
            b[ai] = true;
        } else {
            ans = "NO".to_string();
            break;
        }
    }

    println!("{}", ans);
}
//  [typescript]
import * as fs from 'fs'

function main(n: number, xn: number[]) {
    xn = xn.sort();

    for (let i: number = 0; i < xn.length-1; i++) {
        if (xn[i] === xn[i+1]) {
            console.log('NO');
            return;
        }
    }
    console.log('YES');
}

const input: string[] = fs.readFileSync("/dev/stdin", "utf8").split("\n");
const args1: number = parseInt(input[0]);
const args2: number[] = input[1].split(' ').map(n => parseInt(n));
main(args1, args2);
//  [typescript]
import * as fs from 'fs';

const [n, as] = fs.readFileSync("/dev/stdin", "utf8").split("\n")
const uniq = Array.from(new Set(as.split(" ")))
console.log(uniq.length === +n ? "YES" : "NO")
//  [typescript]
function Main(input) {
    const lines = input.split("\n");
    const cache = [];
    let result = 'YES';

    lines[1].split(' ').some(a => {
        if (cache[a]) {
            result = 'NO';
            return true;
        }
        cache[a] = true;
    });
    
    console.log(result);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [python]
def multiple(list_a, list_b):
  ans = [0] * len(list_a)
  
  for i in range(len(list_a)):
    ans[i] = list_a[i] * list_b[i]
  
  return ans

n, m, c = [int(x) for x in input().split()]

b = [int(x) for x in input().split()]

count = 0
for _ in range(n):
  na = [int(x) for x in input().split()]
  if sum(multiple(na, b)) + c > 0:
    count += 1

print(count)
//  [python]
n,m,c=map(int,input().split())
b=list(map(int,input().split()))
ans=0
for i in range(n):
  a=list(map(int,input().split()))
  jdg=0
  for i in range(m):
    jdg+=a[i]*b[i]
  if jdg+c>0:
    ans+=1
print(ans)
//  [python]
N,M,C = map(int,input().split())
B = list(map(int,input().split()))
q = 0
c = 0
for n in range(N):
  A = list(map(int,input().split()))
  q = 0
  for m in range(M):
    q += A[m]*B[m]
    if m+1 == M and q+C > 0:
      c +=1
print(c)
//  [python]
import numpy as np

N, M, C = map(int, input().split())
ans = 0
B = np.array(list(map(int, input().split())))
for i in range(N):
    A = np.array(list(map(int, input().split())))
    if np.sum(A * B) + C > 0:
        ans += 1
print(ans)
//  [python]
import numpy as np

N,M,C=map(int,input().split())
b=np.array([i for i in map(int,input().split())])
a=np.zeros((N,M))
for i in range(N):
    a[i,:]=np.array([i for i in map(int,input().split())])
print((((a*b).sum(axis=1)+C)>0).sum())
//  [python]
import numpy as np

N, M, C = map(int, input().split())
B = list(map(int, input().split()))
A = [list(map(int, input().split())) for _ in range(N)]

B = np.array(B)
A = np.array(A)

result = np.dot(A, B) + C
print(np.sum(result > 0))
//  [java]
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {

  public static void main(String[] args) {
    final Scanner scanner = new Scanner(System.in);
    final int N = Integer.parseInt(scanner.next());
    final int M = Integer.parseInt(scanner.next());
    final int C = Integer.parseInt(scanner.next());

    final List<List<Integer>> a = new ArrayList<>();
    final List<Integer> b = new ArrayList<>();

    for (int i = 0; i < M; i++) {
      b.add(Integer.parseInt(scanner.next()));
    }
    for (int i = 0; i < N; i++) {
      final List<Integer> tmp = new ArrayList<>();
      for (int j = 0; j < M; j++) {
        tmp.add(Integer.parseInt(scanner.next()));
      }
      a.add(tmp);
    }

    final int size = a.stream()
        .filter(e -> {
          int result = 0;
          for (int i = 0; i < M; i++) {
            result += e.get(i) * b.get(i);
          }
          result += C;
          return result > 0;
        })
        .collect(Collectors.toList())
        .size();
    System.out.println(size);
  }
}
//  [java]
import java.util.Scanner;
import java.util.stream.IntStream;

public class Main {

	public static void main(String[] args) {
		try (Scanner scanner = new Scanner(System.in)) {
			int n = scanner.nextInt();
			int m = scanner.nextInt();
			int c = scanner.nextInt();
			scanner.nextLine();
			int b[] = new int[m];
			IntStream.range(0, m).forEach(i -> b[i] = scanner.nextInt());
			scanner.nextLine();
			System.out.println(IntStream.range(0, n).filter(i -> {
				int sum = IntStream.range(0, m).map(j -> scanner.nextInt() * b[j]).sum();
				scanner.nextLine();
				return (sum + c) > 0;
			}).count());
		}
	}
}
//  [java]
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);
        String[] arr = br.readLine().split(" ");
        int N = Integer.parseInt(arr[0]);
        int M = Integer.parseInt(arr[1]);
        int C = Integer.parseInt(arr[2]);
        List<Integer> list = Arrays.stream(br.readLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());
        int ans = 0;
        for (int i = 0; i < N; i++) {
            List<Integer> l = Arrays.stream(br.readLine().split(" "))
                .map(Integer::parseInt)
                .collect(Collectors.toList());
            int sum = 0;
            for (int j = 0; j < M; j++) {
                sum += list.get(j) * l.get(j);
            }
            if (sum + C > 0) {
                ans++;
            }
        }
        out.println(ans);
        out.close();
    }
}
//  [cpp]
#include<iostream>
#include<vector>
using namespace std;

int main(){
 int n,m,c;
 cin >> n >> m >> c;

 int count = 0;
 int B[m];

 for(int i = 0;i < m;++i)
   cin >> B[i];

 int A[n][m];

 for(int j = 0;j < n;++j){
   for(int i = 0;i < m;++i){
     cin >> A[j][i];
   }
 }

 for(int j = 0;j < n;++j){
   int sum = 0;
   for(int i = 0;i < m;++i){
     sum += A[j][i]*B[i];
     }
   if(sum + c > 0) ++count;
 }
  
 cout << count << endl;
}
//  [cpp]
//By Krishna Yadav
#pragma GCC optimize ("-O2")
#include <bits/stdc++.h>
using namespace std;
#define fastio ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define testcase(t) int t; cin>>t; while(t--)
#define forstl(i,v) for(auto &i: v)
#define forn(i,e) for(int i = 0; i < e; i++)
#define ln "\n"
#define dbg(x) cout<<#x<<" = "<<x<<ln
#define dbg2(x,y) cout<<#x<<" = "<<x<<" & "<<#y<<" = "<<y<<ln
typedef long long int ll;
typedef long double ld;
typedef pair<int, int> p32;
typedef vector<ll> v64;
typedef vector<int> v32;
typedef map<int, int> m32;
const int LIM = 2e5+5, MOD = 1e9+7;
int t,n,m,k,x,y;

int main(){
  fastio;
  int n, m, c, count = 0;
  cin>>n>>m>>c;
  int A[m], B[m];
  forn(i, m) cin>>B[i];
  forn(i, n){
    forn(i, m) cin>>A[i];
    int sum = c;
    forn(i, m) sum+=(A[i]*B[i]);
    if(sum > 0) count++;
  }
  cout<<count<<endl;
}
//  [cpp]
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <numeric>
#include <functional>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include<map>

#define repd(i,a,b) for (int i=(a);i<(b);i++)
#define rep(i,n) repd(i,0,n)
typedef long long ll;
typedef unsigned int ui;
typedef unsigned short us;

using namespace std;


int inputValue() {
  int a;
  scanf("%d", &a);
  return a;
};
void inputVector(vector<int>* v) {
  //cin.tie(0);
  //ios::sync_with_stdio(false);
  int a;
  while (cin >> a) {
    if (a == -1)break;
    v->push_back(a);
  }
};

void inputVector(vector<int> * p, int a) {
  p->clear();
  p->shrink_to_fit();
  rep(i, a) {
    int input;
    cin >> input;
    p->push_back(input);
  }
}

void inputVector2(vector<vector<int>>& v, ui r, ui c) {
  int temp;
  for (size_t i = 0; i < r; i++)
  {
    for (size_t j = 0; j < c; j++)
    {
      scanf("%d", &temp);
      v[i][j] = temp;
    }
  }
}
void inputVector3(vector<int>* v0, vector<int>* v1) {
  int a;
  unsigned short count = 0b0;
  while (cin >> a) {
    if (a == -1)break;
    if (count)v0->push_back(a); else v1->push_back(a);
    count = count ^ 1;
  }
};

template <typename T>
void output(T a, int precision) {
  if (precision > 0) {
    cout << setprecision(precision) << a << "\n";
  }
  else {
    cout << a << "\n";
  }
}

int main(int argc, const char * argv[]) {
  int count = 0;
  int tempvalue;
  ui n;
  ui m;
  int c;
  vector<int> b;
  vector<int> a;
  scanf("%d %d %d", &n, &m, &c);
  inputVector(&b, m);
  for (size_t i = 0; i < n; i++)
  {
    inputVector(&a, m);
    tempvalue = c;
    for (size_t j = 0; j < m; j++)
    {
      tempvalue += a[j] * b[j];
    }
    if (tempvalue > 0) {
      ++count;
    }
  }
  printf("%d", count);
  return 0;
}
//  [cpp]

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

class Solver {
public:
    void solve();
};

void Solver::solve() {
    using namespace std;
    int n, m, c;
    std::cin >> n >> m >> c;
    std::vector<int> b = std::vector<int>();
    for (std::size_t i = 0; i < m; ++i) {
        int t;
        std::cin >> t;
        b.push_back(t);
    }

    int count = 0;
    for (size_t i = 0; i < n; ++i) {
        int result = 0;
        for (size_t j = 0; j < m; ++j) {
            int a;
            cin >> a;
            result += a * b[j];
        }
        if ((result + c) > 0)
            count++;

    }
    cout << count << endl;


}


int main() {
    Solver solver = Solver();
    solver.solve();
    return 0;
}
//  [cpp]
#include <bits/stdc++.h>
using namespace std;

#define rep(i, n) for (int i = (int)(0); i < (int)(n); ++i)
#define reps(i, n) for (int i = (int)(1); i <= (int)(n); ++i)
#define rrep(i, n) for (int i = ((int)(n)-1); i >= 0; i--)
#define rreps(i, n) for (int i = ((int)(n)); i > 0; i--)
#define irep(i, m, n) for (int i = (int)(m); i < (int)(n); ++i)
#define ireps(i, m, n) for (int i = (int)(m); i <= (int)(n); ++i)
#define FOR(e, c) for (auto &e : c)
#define SORT(v, n) sort(v, v + n);
#define vsort(v) sort(v.begin(), v.end());
#define rvisort(v) sort(v.begin(), v.end(), greater<int>());
#define all(v) v.begin(), v.end()
#define mp(n, m) make_pair(n, m);
#define coutd(d) cout<<std::setprecision(10)<<d<<endl;
#define cinline(n) getline(cin,n);

using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using pii = pair<int, int>;
using ul = unsigned long;

template<class T, class C> void chmax(T& a, C b){ a>b?:a=b; }
template<class T, class C> void chmin(T& a, C b){ a<b?:a=b; }

const int mod=1e9+7;

struct mint {
  ll x;
  mint(ll x=0):x(x%mod){}
  mint& operator+=(const mint a) {
    if ((x += a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator-=(const mint a) {
    if ((x += mod-a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator*=(const mint a) {
    (x *= a.x) %= mod;
    return *this;
  }
  mint operator+(const mint a) const {
    mint res(*this);
    return res+=a;
  }
  mint operator-(const mint a) const {
    mint res(*this);
    return res-=a;
  }
  mint operator*(const mint a) const {
    mint res(*this);
    return res*=a;
  }
};

mint c[4005][4005];
void init() {
  c[0][0] = 1;
  for (int i = 0; i <= 4000; i++) {
    for (int j = 0; j <= i; j++) {
      c[i+1][j] += c[i][j];
      c[i+1][j+1] += c[i][j];
    }
  }
}
mint comb(int n, int k) {
  return c[n][k];
}

bool IsPrime(int num)
{
    if (num < 2) return false;
    else if (num == 2) return true;
    else if (num % 2 == 0) return false;

    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            return false;
        }
    }

    return true;
}

map<ll, ll> primeFact(ll n) {
  map<ll, ll> res;
  for (ll i = 2; i * i <= n; i++) {
    while (n % i == 0) {
      res[i]++;
      n /= i;
    }
  }
  if (n != 1) res[n]++;
  return res;
}

void printv(vi& v){
  rep(i,v.size()) cout << v[i] << " ";
  cout << endl;
}
void printv(vll& v){
  rep(i,v.size()) cout << v[i] << " ";
  cout << endl;
}
int vtotal(vi& v){
  int total=0;
  rep(i,v.size()) total+=v[i];
  return total;
}

int main()
{
  //init(); // mint初期化
  cin.tie( 0 );
  ios::sync_with_stdio( false );

  int n,m,c;cin>>n>>m>>c;
  vi b(m);
  rep(i,m)cin>>b[i];
  vvi a(n,vi(m));
  rep(i,n){
    rep(j,m)cin>>a[i][j];
  }

  int ans=0;
  rep(i,n){
    int total=0;
    rep(j,m){
      total+=b[j]*a[i][j];
    }
    total+=c;
    if(total>0)ans++;
  }
  cout<<ans<<endl;

  return 0;
}
//  [cpp]
#include <bits/stdc++.h>
using namespace std;
 
#define rep(i, n) for (int i = (int)(0); i < (int)(n); ++i)
#define reps(i, n) for (int i = (int)(1); i <= (int)(n); ++i)
#define rrep(i, n) for (int i = ((int)(n)-1); i >= 0; i--)
#define rreps(i, n) for (int i = ((int)(n)); i > 0; i--)
#define irep(i, m, n) for (int i = (int)(m); i < (int)(n); ++i)
#define ireps(i, m, n) for (int i = (int)(m); i <= (int)(n); ++i)
#define FOR(e, c) for (auto &e : c)
#define SORT(v, n) sort(v, v + n);
#define vsort(v) sort(v.begin(), v.end());
#define rvisort(v) sort(v.begin(), v.end(), greater<int>());
#define all(v) v.begin(), v.end()
#define mp(n, m) make_pair(n, m);
#define coutd(d) cout<<std::setprecision(10)<<d<<endl;
#define cinline(n) getline(cin,n);
 
using ll = long long;
using vi = vector<int>;
using vvi = vector<vi>;
using vll = vector<ll>;
using vvll = vector<vll>;
using pii = pair<int, int>;
using ul = unsigned long;
 
template<class T, class C> void chmax(T& a, C b){ a>b?:a=b; }
template<class T, class C> void chmin(T& a, C b){ a<b?:a=b; }
 
const int mod=1e9+7;
 
struct mint {
  ll x;
  mint(ll x=0):x(x%mod){}
  mint& operator+=(const mint a) {
    if ((x += a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator-=(const mint a) {
    if ((x += mod-a.x) >= mod) x -= mod;
    return *this;
  }
  mint& operator*=(const mint a) {
    (x *= a.x) %= mod;
    return *this;
  }
  mint operator+(const mint a) const {
    mint res(*this);
    return res+=a;
  }
  mint operator-(const mint a) const {
    mint res(*this);
    return res-=a;
  }
  mint operator*(const mint a) const {
    mint res(*this);
    return res*=a;
  }
};
 
mint c[4005][4005];
void init() {
  c[0][0] = 1;
  for (int i = 0; i <= 4000; i++) {
    for (int j = 0; j <= i; j++) {
      c[i+1][j] += c[i][j];
      c[i+1][j+1] += c[i][j];
    }
  }
}
mint comb(int n, int k) {
  return c[n][k];
}
 
bool IsPrime(int num)
{
    if (num < 2) return false;
    else if (num == 2) return true;
    else if (num % 2 == 0) return false;
 
    double sqrtNum = sqrt(num);
    for (int i = 3; i <= sqrtNum; i += 2)
    {
        if (num % i == 0)
        {
            return false;
        }
    }
 
    return true;
}
 
map<ll, ll> primeFact(ll n) {
  map<ll, ll> res;
  for (ll i = 2; i * i <= n; i++) {
    while (n % i == 0) {
      res[i]++;
      n /= i;
    }
  }
  if (n != 1) res[n]++;
  return res;
}
 
void printv(vi& v){
  rep(i,v.size()) cout << v[i] << " ";
  cout << endl;
}
void printv(vll& v){
  rep(i,v.size()) cout << v[i] << " ";
  cout << endl;
}
int vtotal(vi& v){
  int total=0;
  rep(i,v.size()) total+=v[i];
  return total;
}
 
int main()
{
  //init(); // mint初期化
  cin.tie( 0 );
  ios::sync_with_stdio( false );
 
  int n,m,c;cin>>n>>m>>c;
  vi b(m);
  rep(i,m)cin>>b[i];
  vvi a(n,vi(m));
  rep(i,n){
    rep(j,m)cin>>a[i][j];
  }
 
  int ans=0;
  rep(i,n){
    int total=0;
    rep(j,m){
      total+=b[j]*a[i][j];
    }
    total+=c;
    if(total>0)ans++;
  }
  cout<<ans<<endl;
 
  return 0;
}
//  [c]
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int N,M,C;
    int answer = 0;
    scanf("%d %d %d",&N,&M,&C);
    int *B = (int *)calloc(M,sizeof(int));
    for(int i=0;i<M;i++) {
        scanf("%d",&B[i]);
    }
    int **num = (int **)calloc(N,sizeof(int *));
    for(int i=0;i<N;i++) {
        num[i] = calloc(M,sizeof(int));
        for(int j=0;j<M;j++) {
            scanf("%d",&num[i][j]);
        }
    }

    for(int i=0;i<N;i++) {
        int isAnswer = 0;
        for(int j=0;j<M;j++) {
            isAnswer += num[i][j]*B[j];
        }
        if((isAnswer + C) > 0) {
            answer++;
        }
    }

    printf("%d",answer);

    return 0;
    
}
//  [c]
#include <stdio.h>




int main(int argc, char *argv[])
{
	int A[20][20];
	int B[20];
	int C;
	int N, M;
	int i, j;
	int sum, cnt;

	scanf("%d %d %d", &N, &M, &C);
	
	for (i = 0; i < M; i++) {
		scanf("%d", &B[i]);
	}

	for (j = 0; j < N; j++) {
		for (i = 0; i < M; i++) {
			scanf("%d", &A[j][i]);
		}
	}

	cnt = 0;
	for (j = 0; j < N; j++) {
		sum = 0;
		for (i = 0; i < M; i++) {
			sum +=  A[j][i]*B[i];
		}
		sum += C;
		if (sum > 0) {
			cnt++;
		}
	}
	
	printf("%d\n", cnt);
	return 0;
}
//  [c]
#include <stdio.h>
int main(void){
int n,m,c;
int a[30][30];
int b[30];
int count;
int count2;
int kotae=0;
int sum;
scanf("%d %d %d",&n,&m,&c);

for(count=1;count!=m+1;count++){
    scanf("%d",&b[count]);
    
}


for(count2=1;count2!=n+1;count2++){
    for(count=1;count!=m+1;count++){
        scanf("%d",&a[count2][count]);
        }
}

count=1;
count2=1;
sum=0;

for(;;){
    
for(;;){
    sum=sum+b[count]*a[count2][count];
    count++;
    if(count==m+1){break;}

}

sum=sum+c;
if(sum>0){kotae++;}

sum=0;
count=1;
count2++;
if(count2==n+1){break;}

}

printf("%d",kotae);

return 0;
}
//  [c]
#include <stdio.h>

void main(void){
  int N,M,i,j,n,s=0;
  int A[20],B[20],C;
  scanf("%d %d %d",&N,&M,&C);
  for(i=0;i<M;i++){
    scanf("%d",&B[i]);
  }
  for(i=0;i<N;i++){
    n=C;
    for(j=0;j<M;j++){
      scanf("%d",&A[j]);
      n=n+A[j]*B[j];
    }
    if(n>0)s+=1;
  }
  printf("%d",s);
}
//  [c]
#include<stdio.h>

int main()
{
    int N, M, C,i,j,k,sum=0, count=0;
    scanf("%d %d %d", &N, &M, &C);
    int B[M], A[M];

    for(i=0; i<M; i++)
        scanf("%d", &B[i]);

    for(j=0; j<N; j++)
    {
         sum = 0;
         for(k=0;k<M; k++)
            {
                scanf("%d", &A[k]);

                sum += A[k]*B[k];


            }
            if(sum+C > 0)
                count++;
    }


    printf("%d\n", count);

    return 0;
}
//  [c]
#include <stdio.h>

int main(){
    int n, m, c;
    int b[30];
    int a[30][30];

    scanf("%d %d %d", &n, &m, &c);
    for(int i = 0; i < m; ++i){
        scanf("%d", &b[i]);
    }
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < m; ++j){
            scanf("%d", &a[i][j]);
        }
    }

    int sum = 0;
    int cnt = 0;
    for(int i = 0; i < n; ++i){
        sum = 0;
        for(int j = 0; j < m; ++j){
            sum += (a[i][j] * b[j]);
        }
        if(sum + c > 0) cnt++;
    }

    printf("%d\n", cnt);

    return 0;
}
//  [javascript]
'use strict'

function main(input) {
  let a = input.split('\n').map(v => v.split(' ').map(v => ~~v))
  a = a.slice(0, -1)
  const n = a[0][0]
  const m = a[0][1]
  const c = a[0][2]
  const b = a[1]
  let d = a.slice(2, a.length)
  //   console.log(b)
  //   console.log(d[1])
  //   console.log(d[2])

  let cnt = 0
  for (let i = 0; i < n; i++) {
    let tmp = 0
    for (let j = 0; j < m; j++) {
      tmp += d[i][j] * b[j]
    }
    // tmp += c
    if (tmp + c > 0) cnt++
  }

  console.log(cnt)
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'))
//  [javascript]
"use strict";

function Main(input) {
    input = input.split("\n");

    input[0] = input[0].split(" ");
    const n = parseInt(input[0][0], 10);
    const m = parseInt(input[0][1], 10);
    const c = parseInt(input[0][2], 10);
    const b = input[1].split(" ");

    let answer = 0;
    for (let i = 0; i < n; i++) {
        let code = input[2 + i].split(" ");
        let codeScore = c;

        for (let j = 0; j < m; j++) {
            codeScore += parseInt(b[j], 10) * parseInt(code[j], 10)
        }

        if (codeScore > 0) {
            answer++;
        }
    }

    console.log(answer);
}

Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
  input = input.split("\n")
  tmp0 = input[0].split(" ")
  N = Number(tmp0[0])
  M = Number(tmp0[1])
  C = Number(tmp0[2])
  B = input[1].split(" ")

  var ans = 0;
  for(var i = 0; i < N; i++)
  {
    A = input[2 + i].split(" ")
    var tmpSum = 0
    for(var j = 0; j < M; j++)
    {
      tmpSum += Number(A[j]) * Number(B[j])
    }
    if( (tmpSum+ C) > 0){
      ans++;
    }

  }
  console.log(ans)
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
// Main("3 2\n2 1\n")
//  [javascript]
"use strict";
    
const main = arg => {
    const N = arg.split("\n")[0].split(" ")[0];
    const M = arg.split("\n")[0].split(" ")[1];
    const C = parseInt(arg.split("\n")[0].split(" ")[2]);
    
    const B = arg.split("\n")[1].split(" ").map(n=>parseInt(n));
    const A = arg.split("\n").slice(2);
    
    let cnt = 0;
    
    for(let i=0; i<N; i++) {
        let temp = 0;
        A[i].split(" ").forEach((val,idx)=>temp += val*B[idx]);
        
        if(temp + C > 0) {
            cnt++;
        }
    }
    
    console.log(cnt);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [javascript]
var GET=(function(){function f(s){return new g(s);}function g(s){this._s=s.trim().split("\n");this._y=0;}g.prototype.a=function(f){var s=this._s, y=this._y, r;if(typeof s[y]==="string")s[y]=s[y].split(" ").reverse();r=s[y].pop();if(!s[y].length)this._y++;return f?r:+r;};g.prototype.l=function(f){var s=this._s[this._y++].split(" ");return f?s:s.map(a=>+a);};g.prototype.m=function(n,f){var r=this._s.slice(this._y,this._y+=n).map(a=>a.split(" "));return f?r:r.map(a=>a.map(a=>+a));};g.prototype.r=function(n,f){var r=this._s.slice(this._y,this._y+=n);return f?r:r.map(a=>+a);};return f;})();
var o=GET(require("fs").readFileSync("/dev/stdin","utf8"));

console.log(main());
function main(){
  var n = o.a();
  var m = o.a();
  var c = o.a();
  var b = o.l();
  var ans = 0;
  for(var i = 0; i < n; i++){
    var a = o.l();
    var s = c;
    for(var j = 0; j < m; j++){
      s += a[j] * b[j];
    }
    if(s > 0)ans++;
  }
  return ans;
}
//  [go]
package main

import (
        "bufio"
        "fmt"
        "os"
        "strconv"
)

var si = bufio.NewScanner(os.Stdin)

func readInt() int {
        si.Scan()
        r, _ := strconv.Atoi(si.Text())
        return r
}

func main() {
        si.Split(bufio.ScanWords)
        si.Buffer(make([]byte, 0), 10000000)

        N, M, C := readInt(), readInt(), readInt()
        B := make([]int, M)
        for i := 0; i < M; i++ {
                B[i] = readInt()
        }
        ans := 0
        for i := 0; i < N; i++ {
                ret := C
                for j := 0; j < M; j++ {
                        ret += B[j] * readInt()
                }
                if ret > 0 {
                        ans += 1
                }
        }
        fmt.Println(ans)
}
//  [go]
package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strconv"
)

func main() {
	fmt.Printf("%d\n", resolve(parseProblem(os.Stdin)))
}

func parseProblem(r io.Reader) ([][]int, []int, int) {
	const (
		initialBufSize = 100000
		maxBufSize     = 1000000
	)
	buf := make([]byte, initialBufSize)

	sc := bufio.NewScanner(r)
	sc.Buffer(buf, maxBufSize)
	sc.Split(bufio.ScanWords) // bufio.ScanLines
	n, m, c := scanInt(sc), scanInt(sc), scanInt(sc)
	b := nextMatrix(1, m, sc)
	mx := nextMatrix(n, m, sc)
	return mx, b[0], c
}

func nextMatrix(n, m int, sc *bufio.Scanner) (matrix [][]int) {
	matrix = make([][]int, n)
	for i := 0; i < n; i++ {
		matrix[i] = make([]int, m)
		for j := 0; j < m; j++ {
			matrix[i][j] = nextInt(sc)
		}
	}
	return
}

func nextInt(sc *bufio.Scanner) int {
	sc.Scan()
	a, _ := strconv.Atoi(sc.Text())
	return int(a)
}

func nextString(sc *bufio.Scanner) string {
	sc.Scan()
	return sc.Text()
}

func resolve(mx [][]int, b []int, c int) (num int) {
	for i := 0; i < len(mx); i++ {
		if mul(i, mx, b)+c > 0 {
			num++
		}
	}
	return num
}

func mul(i int, mx [][]int, v []int) int {
	sum := 0
	for j := 0; j < len(mx[i]); j++ {
		sum += mx[i][j] * v[j]
	}
	return sum
}

// snip-scan-funcs
func scanInt(sc *bufio.Scanner) int {
	sc.Scan()
	i, _ := strconv.Atoi(sc.Text())
	return int(i)
}
func scanString(sc *bufio.Scanner) string {
	sc.Scan()
	return sc.Text()
}