"use strict"

function main(input) {
  //一部の正解がjsで扱う最大値を越えるため、文字列として扱う。
  //計算は配列を使った筆算（上の配列と下の配列を計算、桁上がりも対応）にて行う

  input = Number(input)

  let numbers = ["2", "1"]

  for (let i = 2; i <= input; i++) {
    const cal = (a, b) => {
      //   console.log("a,b", a, b)

      //左詰の配列だと計算しづらいのでreverse
      let aa = a
        .split("")
        .map(v => ~~v)
        .reverse()
      let bb = b
        .split("")
        .map(v => ~~v)
        .reverse()

      let cc = []
      let digit = 0
      //   const maxlength = bb.length//Math.max(aa.length, bb.length)
      //
      //各配列の値についてaa[i] + bb[i]する=筆算 桁数の大きい方の回数
      for (let i = 0; i < bb.length; i++) {
        let tmp = Number(aa[i])
          ? Number(aa[i]) + Number(bb[i]) + digit
          : Number(bb[i]) + digit //
        // console.log("tmp", tmp, aa[i], bb[i], digit)
        digit = 0

        if (tmp >= 10) {
          //   if (bb[i + 1] < maxlength) {
          digit = Math.floor(tmp / 10)
          //   console.log(digit)
          //   } else {
          //     bb.push(Math.floor(tmp / 10))
          //   }
          tmp = tmp % 10
        } else {
          digit = 0
        }
        cc.push(tmp)
        // console.log("tmp", tmp, aa[i], bb[i], digit)

        //桁が上がった場合を考慮
      }
      //   console.log(digit)
      if (digit > 0) cc.push(digit)

      //   if(bb.pop)

      //    let tmp = numbers[i - 2] + numbers[i - 1]
      //
      //   console.log(cc)

      return cc.reverse().join("") //array - string
    }
    let tmp = cal(numbers[i - 2], numbers[i - 1])
    // console.log(tmp)
    numbers.push(tmp)
  }
  //ans
  console.log(numbers.pop()) //string

  //   let nummax = Number.MAX_SAFE_INTEGER

  //   let xxx = 1
  //   let numbers = [2, 1]
  //   for (let i = 2; i <= input; i++) {
  //     let tmp = numbers[i - 2] + numbers[i - 1]
  //     // console.log(i, tmp)
  //     if (tmp <= nummax || xxx < 1) {
  //       numbers.push(tmp)
  //     } else {
  //       console.log("------")

  //       xxx = 1000000 // 10 ** 6
  //       numbers.push(numbers[i - 2] / xxx + numbers[i - 1] / xxx)
  //     }
  //     console.log(numbers[numbers.length - 1])
  //   }
  //   // console.log(Number.MAX_SAFE_INTEGER)

  //   console.log(numbers.pop() * xxx)
}
main(require("fs").readFileSync("/dev/stdin", "utf8"))