const util = require('util');
const nextTick = util.promisify(process.nextTick);
const input = require('fs').readFileSync('/dev/stdin', 'utf8');

const list = input.trim().split('\n');
const [ n, m ]= list[0].split(' ');
const cm = list[1].trim().split(' ');

const genKey = (...args) => {
  const key = args.join(':');
  return key;
};

const tailRecursion = (i, m) => {

};

const dp = new Map();
const memo = (count, targetList) => {
  const nextTargetSet = new Set();
  for (let i = 0; i < targetList.length; i++) {
    const target = targetList[i];
    const key = genKey(count, target);
    let result = 0;
    if (dp.has(key)) {
      return dp.get(key);
    } if (target === 0) {
      return count;
    }
    for (let i = 0; i < Number(m); i++) {
      const nextTarget = target - Number(cm[i]);
      if (nextTarget >= 0) {
        nextTargetSet.add(nextTarget);
      }
    }
  }

  const nextTargetList = [...nextTargetSet.values()];
  return memo(count + 1, nextTargetList);
}

console.log(memo(0, [Number(n)]));

