jiahuimbzuai/CoQuIR huggingface dataset:
//  [rust]
use std::io::stdin;
use std::vec::Vec;

mod utils {
    use std::io::BufRead;
    use std::str::{self, FromStr};

    pub struct StdinReader<R: BufRead> {
        reader: R,
        buf: Vec<u8>,
    }

    impl<R: BufRead> StdinReader<R> {
        pub fn new(reader: R) -> StdinReader<R> {
            StdinReader {
                reader: reader,
                buf: Vec::new(),
            }
        }

        #[allow(unused)]
        #[inline]
        pub fn reads<T: FromStr>(&mut self) -> T {
            self.read_until(b' ')
        }

        #[allow(unused)]
        #[inline]
        pub fn readl<T: FromStr>(&mut self) -> T {
            self.read_until(b'\n')
        }

        #[allow(unused)]
        #[inline]
        pub fn read_vec<T: FromStr>(&mut self) -> Vec<T> {
            return self.read_until::<String>(b'\n').trim().split_whitespace().map(|c| c.parse().ok().unwrap()).collect();
        }

        #[inline]
        pub fn read_until<T: FromStr>(&mut self, delim: u8) -> T {
            loop {
                self.buf.clear();
                let len = self.reader
                    .read_until(delim, &mut self.buf)
                    .expect("failed reading bytes");
                match len {
                    0 => panic!("early eof"),
                    1 if self.buf[0] == delim => (),
                    _ => {
                        if self.buf[len - 1] == delim {
                            self.buf.truncate(len - 1);
                        }
                        break;
                    }
                }
            }

            let elem = unsafe { str::from_utf8_unchecked(&self.buf) };
            elem.parse().unwrap_or_else(|_| panic!(format!("failed parsing: {}", elem)))
         }
    }
}


fn main(){
    let stdin = stdin();
    let mut r = utils::StdinReader::new(stdin.lock());
    let mut n:usize = r.readl();

    let mut res = "Yes";

    let mut pre_x = 0;
    let mut pre_y = 0;
    let mut pre_t = 0;

    for _ in 0..n {
        let t:i32 = r.reads();
        let x:i32 = r.reads();
        let y:i32 = r.readl();

        if( ((t - pre_t) - (x - pre_x).abs() - (y - pre_y).abs()) >= 0 && ((t - pre_t) - (x - pre_x).abs() - (y - pre_y).abs()) % 2 == 0 ){
            pre_x = x;
            pre_y = y;
            pre_t = t;
        }else{
            res = "No";
            break
        }
    }

    println!("{}",res);
}
//  [rust]
macro_rules! input {
    (source = $s:expr, $($r:tt)*) => {
        let mut iter = $s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
    ($($r:tt)*) => {
        let mut s = {
            use std::io::Read;
            let mut s = String::new();
            std::io::stdin().read_to_string(&mut s).unwrap();
            s
        };
        let mut iter = s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
}

macro_rules! input_inner {
    ($iter:expr) => {};
    ($iter:expr, ) => {};

    ($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
        let $var = read_value!($iter, $t);
        input_inner!{$iter $($r)*}
    };
}

macro_rules! read_value {
    ($iter:expr, ( $($t:tt),* )) => {
        ( $(read_value!($iter, $t)),* )
    };

    ($iter:expr, [ $t:tt ; $len:expr ]) => {
        (0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()
    };

    ($iter:expr, chars) => {
        read_value!($iter, String).chars().collect::<Vec<char>>()
    };

    ($iter:expr, usize1) => {
        read_value!($iter, usize) - 1
    };

    ($iter:expr, $t:ty) => {
        $iter.next().unwrap().parse::<$t>().expect("Parse error")
    };
}
fn main() {
    input!{
        n: u32,
        c: [(u32, u32, u32); n],
    };
    let mut pt:u32 = 0;
    let mut px:u32 = 0;
    let mut py: u32 = 0;
    for (t, x, y) in c{
        let time = t - pt;
        let dist = if x > px { x - px} else { px - x} + if y > py { y - py}  else { py - y};
        if !(time % 2 == dist % 2) || (dist > time){
            println!("No");
            return;
        }
        px = x;
        py = y;
        pt = t;
    }
    println!("Yes");
}
//  [rust]
use std::io::prelude::*;
use std::str::FromStr;
pub struct Scanner<R: Read>(R);
impl<R: Read> Scanner<R> {
    pub fn new(reader: R) -> Self {
        Self(reader)
    }
    pub fn read<T: FromStr>(&mut self) -> T {
        let token = self
            .0
            .by_ref()
            .bytes()
            .map(|b| b.unwrap())
            .skip_while(|&b| (b as char).is_whitespace())
            .take_while(|&b| !(b as char).is_whitespace())
            .collect::<Vec<u8>>();
        unsafe { std::str::from_utf8_unchecked(token.as_slice()) }
            .parse()
            .ok()
            .expect("Can't parse it.")
    }
    pub fn vec<T: FromStr>(&mut self, n: usize) -> Vec<T> {
        (0..n).map(|_| self.read()).collect()
    }
    pub fn chars(&mut self) -> Vec<char> {
        self.read::<String>().chars().collect()
    }
}
fn main() {
    let (stdin, stdout) = (std::io::stdin(), std::io::stdout());
    let mut sc = Scanner::new(stdin.lock());
    let mut out = std::io::BufWriter::new(stdout.lock());
    solve(&mut sc, &mut out);
    out.flush().ok().unwrap();
}
fn solve(sc: &mut Scanner<std::io::StdinLock>, out: &mut std::io::BufWriter<std::io::StdoutLock>) {
    let N: usize = sc.read();
    let mut A = Vec::new();
    for _ in 0..N {
        let tup: (i32, i32, i32) = (sc.read(), sc.read(), sc.read());
        A.push(tup);
    }

    let mut ans = true;
    let mut ct = 0;
    let mut cx = 0;
    let mut cy = 0;
    for &(t, x, y) in A.iter() {
        let dist = (x - cx).abs() + (y - cy).abs();
        ans &= dist <= t - ct && ((t - ct) & 1) == (dist & 1);
        ct = t;
        cx = x;
        cy = y;
    }
    println!("{}", if ans { "YES" } else { "NO" });
}
//  [rust]
use std::io::prelude::*;
use std::str::FromStr;
pub struct Scanner<R: Read>(R);
impl<R: Read> Scanner<R> {
    pub fn new(reader: R) -> Self {
        Self(reader)
    }
    pub fn read<T: FromStr>(&mut self) -> T {
        let token = self
            .0
            .by_ref()
            .bytes()
            .map(|b| b.unwrap())
            .skip_while(|&b| (b as char).is_whitespace())
            .take_while(|&b| !(b as char).is_whitespace())
            .collect::<Vec<u8>>();
        unsafe { std::str::from_utf8_unchecked(token.as_slice()) }
            .parse()
            .ok()
            .expect("Can't parse it.")
    }
    pub fn vec<T: FromStr>(&mut self, n: usize) -> Vec<T> {
        (0..n).map(|_| self.read()).collect()
    }
    pub fn chars(&mut self) -> Vec<char> {
        self.read::<String>().chars().collect()
    }
}
fn main() {
    let (stdin, stdout) = (std::io::stdin(), std::io::stdout());
    let mut sc = Scanner::new(stdin.lock());
    let mut out = std::io::BufWriter::new(stdout.lock());
    solve(&mut sc, &mut out);
    out.flush().ok().unwrap();
}
fn solve(sc: &mut Scanner<std::io::StdinLock>, out: &mut std::io::BufWriter<std::io::StdoutLock>) {
    let N: usize = sc.read();
    let mut A = Vec::new();
    for _ in 0..N {
        let tup: (i32, i32, i32) = (sc.read(), sc.read(), sc.read());
        A.push(tup);
    }

    let mut ans = true;
    let mut ct = 0;
    let mut cx = 0;
    let mut cy = 0;
    for &(t, x, y) in A.iter() {
        let dist = (x - cx).abs() + (y - cy).abs();
        ans = dist <= t - ct && ((t - ct) & 1) == (dist & 1);
        ct = t;
        cx = x;
        cy = y;
    }
    println!("{}", if ans { "YES" } else { "NO" });
}
//  [rust]
use std::io::prelude::*;
use std::str::FromStr;
pub struct Scanner<R: Read>(R);
impl<R: Read> Scanner<R> {
    pub fn new(reader: R) -> Self {
        Self(reader)
    }
    pub fn read<T: FromStr>(&mut self) -> T {
        let token = self
            .0
            .by_ref()
            .bytes()
            .map(|b| b.unwrap())
            .skip_while(|&b| (b as char).is_whitespace())
            .take_while(|&b| !(b as char).is_whitespace())
            .collect::<Vec<u8>>();
        unsafe { std::str::from_utf8_unchecked(token.as_slice()) }
            .parse()
            .ok()
            .expect("Can't parse it.")
    }
    pub fn vec<T: FromStr>(&mut self, n: usize) -> Vec<T> {
        (0..n).map(|_| self.read()).collect()
    }
    pub fn chars(&mut self) -> Vec<char> {
        self.read::<String>().chars().collect()
    }
}
fn main() {
    let (stdin, stdout) = (std::io::stdin(), std::io::stdout());
    let mut sc = Scanner::new(stdin.lock());
    let mut out = std::io::BufWriter::new(stdout.lock());
    solve(&mut sc, &mut out);
    out.flush().ok().unwrap();
}
fn solve(sc: &mut Scanner<std::io::StdinLock>, out: &mut std::io::BufWriter<std::io::StdoutLock>) {
    let N: usize = sc.read();
    let mut A = Vec::new();
    for _ in 0..N {
        let tup: (i32, i32, i32) = (sc.read(), sc.read(), sc.read());
        A.push(tup);
    }

    let mut ct = 0;
    let mut cx = 0;
    let mut cy = 0;
    for &(t, x, y) in A.iter() {
        let dist = (x - cx).abs() + (y - cy).abs();
        if dist <= t - ct && ((t - ct - dist) & 1) == 0 {
            ct = t;
            cx = x;
            cy = y;
        } else {
            println!("NO");
            return;
        }
    }
    println!("YES");
}
//  [swift]
func readInts() -> [Int] {
    return readLine()!.split(separator: " ").map { Int($0)! }
}

func main() {
    let N = Int(readLine()!)!
    var (t, x, y) = (0, 0, 0)
    for _ in 1...N {
        let line = readInts()
        let t_ = line[0]
        let x_ = line[1]
        let y_ = line[2]
        let dt = t_ - t
        let dx = abs(x_ - x)
        let dy = abs(y_ - y)
        if dt < dx + dy {
            print("No")
            return
        }
        if t_ % 2 != (x_ + y_) % 2 {
            print("No")
            return
        }
        (t, x, y) = (t_, x_, y_)
    }
    print("Yes")
}

main()
//  [swift]
func readInts() -> [Int] {
    return readLine()!.split(separator: " ").map { Int($0)! }
}

func main() {
    let N = Int(readLine()!)!
    
    var (t_, x_, y_) = (0, 0, 0)
    for _ in 1...N {
        let line = readInts()
        let t = line[0]
        let x = line[1]
        let y = line[2]
        
        let dT = t - t_
        let dX = abs(x - x_)
        let dY = abs(y - y_)
        
        if dT < dX + dY {
            print("No")
            return
        }
        
        if dT % 2 != (dX + dY) % 2 {
            print("No")
            return
        }
        
        (t_, x_, y_) = (t, x, y)
    }
    
    print("Yes")
}

main()
//  [swift]
let N = Int(readLine()!)!
var ans = "Yes"
var preT = 0
var preX = 0
var preY = 0
for _ in 0..<N {
    let input = readLine()!.characters.split(" ").map{Int(String($0))!}
    let (t, x, y) = (input[0], input[1], input[2])
    let dist = abs(x - preX) + abs(y - preY)
    let time = t - preT
    let overTime = time - dist
    if overTime < 0 || overTime % 2 > 0 {
        ans = "No"
    }
    preT = t
    preX = x
    preY = y
}
print(ans)
//  [typescript]
const main = (input) => {
    const args = input.split('\n');
    const N = parseInt(args[0], 10);
    const nums = args.slice(1, N + 1);
    const isValid = nums.every((n) => {
        const ns = n.split(' ');
        const t = parseInt(ns[0], 10),
            x = parseInt(ns[1], 10),
            y = parseInt(ns[2], 10);
        const sum = x + y;

        return (t >= sum) && ((t % 2) === (sum % 2));
    });

    if (isValid) {
        console.log('Yes');
    } else {
        console.log('No');
    }
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [typescript]
"use strict"
let fs = require('fs');
let input = fs.readFileSync("/dev/stdin", "utf8").split(/\n/);
 
const N = +input[0];
let currentCoordinate = { x: 0, y: 0 };
let currentTime = 0;
let ans = 'Yes';
 
for(let i=1; i<=N; i++ ) {
  const row = input[i].split(' ');
  const t = +row[0] - currentTime;
  let move = Math.abs( +row[1] - currentCoordinate.x) + Math.abs(+row[2] - currentCoordinate.y);
  if( !( t >= move && (t - move) % 2 === 0) ) {
    ans = 'No';
    break;
  }
  currentCoordinate = { x: +row[1], y: +row[2] };
  currentTime += t;
}
 
console.log(ans);
//  [typescript]
function main(input) {
  input = input.split("\n");
  const n = Number(input[0]);
  let prevX = 0;
  let prevY = 0;
  let prevT = 0;
  let result = "Yes";
  for (let i = 1; i <= n; i++) {
    const [t, x, y] = input[i].split(" ").map(n => Number(n));
    const diffT = t - prevT;
    const distance = Math.abs(x - prevX) + Math.abs(y - prevY);
    if (diffT < distance || diffT%2 !== distance%2) {
      	result = "No";
        break;
    }
  }
  console.log(result);
}
main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [typescript]
const lines: string[] = [];
const reader = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});
reader.on("line", function (line: string) {
  lines.push(line);
});

function reverseString(str: string) {
  return str.split("").reverse().join("");
}

reader.on("close", function () {
  const num = reverseString(lines[0] as string);
  const actionList: number[][] = [];
  for (let i = 1; i < lines.length; i++) {
    let str = lines[i].split(" ");
    actionList.push([Number(str[0]), Number(str[1]), Number(str[2])]);
  }

  let res = true;

  actionList.some((action, index): any => {
    if (index === 0) {
      if (!judge(action[0], 0, 0, action[1], action[2])) {
        res = false;
        return true;
      }
    } else {
      if (
        !judge(
          action[0],
          actionList[index - 1][1],
          actionList[index - 1][2],
          action[1],
          action[2]
        )
      ) {
        return true;
      }
    }
  });

  //   console.log(num, actionList);
  console.log(res ? "Yes" : "No");
});

function judge(
  time: number,
  nowX: number,
  nowY: number,
  ansX: number,
  ansY: number
): boolean {
  //   console.log(time, nowX, nowY, ansX, ansY);
  const dist = ansX + ansY - nowX - nowY;
  //   console.log("dist", dist);
  if (time < dist) {
    return false;
  }
  if (dist % 2 !== time % 2) {
    return false;
  }

  if (time === 0) {
    return nowX === ansX && nowY === ansY;
  } else {
    const nextTime = time - 1;
    const xMinus =
      nowX === 0 ? false : judge(nextTime, nowX - 1, nowY, ansX, ansY);
    const yMinus =
      nowY === 0 ? false : judge(nextTime, nowX, nowY - 1, ansX, ansY);

    return (
      judge(nextTime, nowX + 1, nowY, ansX, ansY) ||
      judge(nextTime, nowX, nowY + 1, ansX, ansY) ||
      xMinus ||
      yMinus
    );
  }
}
//  [typescript]
const lines: string[] = [];
const reader = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});
reader.on("line", function (line: string) {
  lines.push(line);
});

function reverseString(str: string) {
  return str.split("").reverse().join("");
}

reader.on("close", function () {
  const num = reverseString(lines[0] as string);
  const actionList: number[][] = [];
  for (let i = 1; i < lines.length; i++) {
    let str = lines[i].split(" ");
    actionList.push([Number(str[0]), Number(str[1]), Number(str[2])]);
  }

  let res = true;

  actionList.some((action, index): any => {
    if (index === 0) {
      if (!judge(action[0], 0, 0, action[1], action[2])) {
        res = false;
        return true;
      }
    } else {
      if (
        !judge(
          action[0],
          actionList[index - 1][1],
          actionList[index - 1][2],
          action[1],
          action[2]
        )
      ) {
        return true;
      }
    }
  });

  //   console.log(num, actionList);
  console.log(res ? "Yes" : "No");
});

function judge(
  time: number,
  nowX: number,
  nowY: number,
  ansX: number,
  ansY: number
): boolean {
  //   console.log(time, nowX, nowY, ansX, ansY);

  if (time < ansX + ansY) {
    return false;
  }
  if ((ansX + ansY) % 2 !== time % 2) {
    return false;
  }

  if (time === 0) {
    return nowX === ansX && nowY === ansY;
  } else {
    const nextTime = time - 1;
    const xMinus =
      nowX === 0 ? judge(nextTime, nowX - 1, nowY, ansX, ansY) : false;
    const yMinus =
      nowY === 0 ? judge(nextTime, nowX, nowY - 1, ansX, ansY) : false;

    return (
      judge(nextTime, nowX + 1, nowY, ansX, ansY) ||
      judge(nextTime, nowX, nowY + 1, ansX, ansY) ||
      xMinus ||
      yMinus
    );
  }
}
//  [typescript]
const lines: string[] = [];
const reader = require("readline").createInterface({
  input: process.stdin,
  output: process.stdout,
});
reader.on("line", function (line: string) {
  lines.push(line);
});

function reverseString(str: string) {
  return str.split("").reverse().join("");
}

reader.on("close", function () {
  const num = reverseString(lines[0] as string);
  const actionList: number[][] = [];
  for (let i = 1; i < lines.length; i++) {
    let str = lines[i].split(" ");
    actionList.push([Number(str[0]), Number(str[1]), Number(str[2])]);
  }

  let res = true;

  actionList.some((action, index): any => {
    if (index === 0) {
      if (!judge(action[0], 0, 0, action[1], action[2])) {
        res = false;
        return true;
      }
    } else {
      if (
        !judge(
          action[0],
          actionList[index - 1][1],
          actionList[index - 1][2],
          action[1],
          action[2]
        )
      ) {
        return true;
      }
    }
  });

  //   console.log(num, actionList);
  console.log(res ? "Yes" : "No");
});

function judge(
  time: number,
  nowX: number,
  nowY: number,
  ansX: number,
  ansY: number
): boolean {
  //   console.log(time, nowX, nowY, ansX, ansY);

  if (time === 0) {
    return nowX === ansX && nowY === ansY;
  } else {
    const nextTime = time - 1;
    const xMinus =
      nowX === 0 ? judge(nextTime, nowX - 1, nowY, ansX, ansY) : false;
    const yMinus =
      nowY === 0 ? judge(nextTime, nowX, nowY - 1, ansX, ansY) : false;

    return (
      judge(nextTime, nowX + 1, nowY, ansX, ansY) ||
      judge(nextTime, nowX, nowY + 1, ansX, ansY) ||
      xMinus ||
      yMinus
    );
  }
}
//  [python]
d, n = map(int, input().split())
print(100**d*n if n != 100 else 100**d*101)
//  [python]
D, N = map(int, input().split())
if N == 100:
    N += 1
print(100 ** D * N)
//  [python]
d,n=map(int,input().split())
if n != 100:
    print(n*(100**d))
else:
    print(101*(100**d))
//  [python]
#-*-coding:utf-8-*-
import sys
input=sys.stdin.readline

def main():
    d,n = map(int,input().split())

    if d==0:
        print(n)
    elif d==1:
        print(n*100)
    else:
        print(n*10000)

if __name__=="__main__":
    main()
//  [python]

def main():
    D, N = map(int, input().split())
    if D == 0:
        if N <= 99:
            print(N)
        else:
            print(N+1)
    elif D == 1:
        print(100*N)
    else:
        print(10000*N)

if __name__ == "__main__":
    main()
//  [python]
D, N = map(int, input().split())
if  D == 0:
    if N == 100:
        print(101)
    else:
        print(N)

if D == 1:
    if N == 100:
        print(101*100)
    else:
        print(N*100)

if D == 2:
    if N == 100:
        print(101*100**2)
    else:
        print(N**100**2)
//  [java]
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.InputMismatchException;
import java.util.Random;

public class Main
{
	InputStream is;
	PrintWriter out;
	String INPUT = "";
	
	void solve()
	{
		long D = ni(), N = ni();
		System.out.print((int) (Math.pow(100, D) * (N + N / 100)));
	}
						
	void run() throws Exception
	{
		is = INPUT.isEmpty() ? System.in : new ByteArrayInputStream(INPUT.getBytes());
		out = new PrintWriter(System.out);
		
		long s = System.currentTimeMillis();
		solve();
		out.flush();
		if(!INPUT.isEmpty())tr(System.currentTimeMillis()-s+"ms");
	}
	
	public static void main(String[] args) throws Exception 
	{ new Main().run(); }
	
	private byte[] inbuf = new byte[1024];
	public int lenbuf = 0, ptrbuf = 0;
	
	private int readByte()
	{
		if(lenbuf == -1)throw new InputMismatchException();
		if(ptrbuf >= lenbuf)
		{
			ptrbuf = 0;
			try 
			{ lenbuf = is.read(inbuf); } 
			catch (IOException e) 
			{ throw new InputMismatchException(); }
			if(lenbuf <= 0)return -1;
		}
		return inbuf[ptrbuf++];
	}
	
	private boolean isSpaceChar(int c)
	{ return !(c >= 33 && c <= 126); }
	private int skip() 
	{ int b; while((b = readByte()) != -1 && isSpaceChar(b)); return b; }
	
	private double nd() 
	{ return Double.parseDouble(ns()); }
	private char nc()
	{ return (char)skip(); }
	
	private String ns()
	{
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while(!(isSpaceChar(b)))
		{ // when nextLine, (isSpaceChar(b) && b != ' ')
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}
	
	private String nsl()
	{
		int b = skip();
		StringBuilder sb = new StringBuilder();
		while(!(isSpaceChar(b) && b != ' '))
		{ // when nextLine, (isSpaceChar(b) && b != ' ')
			sb.appendCodePoint(b);
			b = readByte();
		}
		return sb.toString();
	}
	
	private char[] ns(int n)
	{
		char[] buf = new char[n];
		int b = skip(), p = 0;
		while(p < n && !(isSpaceChar(b)))
		{
			buf[p++] = (char)b;
			b = readByte();
		}
		return n == p ? buf : Arrays.copyOf(buf, p);
	}
	
	private char[][] nm(int n, int m)
	{
		char[][] map = new char[n][];
		for(int i = 0;i < n;i++)map[i] = ns(m);
		return map;
	}
	
	private int[] na(int n)
	{
		int[] a = new int[n];
		for(int i = 0;i < n;i++)a[i] = ni();
		return a;
	}
	
	private int ni()
	{
		int num = 0, b;
		boolean minus = false;
		while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'));
		if(b == '-')
		{
			minus = true;
			b = readByte();
		}
		
		while(true)
		{
			if(b >= '0' && b <= '9')
			{
				num = num * 10 + (b - '0');
			}else
			{
				return minus ? -num : num;
			}
			b = readByte();
		}
	}
	
	private long nl()
	{
		long num = 0;
		int b;
		boolean minus = false;
		while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'));
		if(b == '-')
		{
			minus = true;
			b = readByte();
		}
		
		while(true){
			if(b >= '0' && b <= '9')
			{
				num = num * 10 + (b - '0');
			}else
			{
				return minus ? -num : num;
			}
			b = readByte();
		}
	}
	
	private static void tr(Object... o) 
	{ System.out.println(Arrays.deepToString(o)); }
}
//  [java]
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.*;
import java.io.*;
import java.util.function.*;
import java.util.stream.Collectors.*;
public class Main {

    public static void main(String[] args) { new Main().stream(); }
    final IO io = new IO();
    final PrintWriter out = new PrintWriter(System.out);
    final int INF = Integer.MAX_VALUE/2;
    void stream(){ solve(); out.flush(); }
    /// ********** 本体 ********** ///

    void solve() {
        int D = io.Int();
        int N = io.Int();
        int ans = N != 100 ? (int)Math.pow(100, D) * N : (int)Math.pow(100, D) * (N+1) ;
        out.println(ans);
    }
    void FOR(int a, int b, Consumer<Integer>act) { for(int i = a; i < b; ++i) act.accept(i); }
    void REP(int a, Consumer<Integer>act) { FOR(0, a, act); }
}
/// ********** その他 ********** ///


/// ********** その他 ********** ///

class IO{
    private final InputStream in = System.in;
    private final byte[] buffer  = new byte[1<<12];
    private int   ptr = 0, buffLen = 0;
    private boolean hasNextByte()          {
        if(ptr < buffLen) return true;
        ptr = 0;
        try{ buffLen = in.read(buffer); } catch (IOException e){ e.printStackTrace(); }
        return buffLen > 0;
    }
    private int     readByte()             { return hasNextByte()? buffer[ptr++] : -1; }
    private boolean isPrintableChar(int c) { return 33 <= c && c <= 126; } //ASCII
    private void    skipUnprintable()      { while (hasNextByte() && !isPrintableChar(buffer[ptr])) ptr++; }
    private boolean hasNext()              { skipUnprintable(); return hasNextByte();}
    private String  next()                 {
        if(!hasNext()) throw new NoSuchElementException();
        StringBuilder sb = new StringBuilder();
        int b = readByte();
        while (isPrintableChar(b)){ sb.appendCodePoint(b); b = readByte(); }
        return sb.toString();
    }
    public String String() { return next(); }
    public char   Char()   { return next().charAt(0);}
    public int    Int()    { return Integer.parseInt(next());}
    public long   Long()   { return Long.parseLong(next());}
    public double Double() { return Double.parseDouble(next());}
    public String[] StringArr (final int n) { final String[] arr = new String[n]; for(int i = 0; i < n; ++i) arr[i] = String(); return arr; }
    public char[]   CharArr   (final int n) { final char[]   arr = new char[n];   for(int i = 0; i < n; ++i) arr[i] = Char();   return arr; }
    public int[]    IntArr    (final int n) { final int[]    arr = new int[n];    for(int i = 0; i < n; ++i) arr[i] = Int();    return arr; }
    public long[]   LongArr   (final int n) { final long[]   arr = new long[n];   for(int i = 0; i < n; ++i) arr[i] = Long();   return arr; }
    public double[] DoubleArr (final int n) { final double[] arr = new double[n]; for(int i = 0; i < n; ++i) arr[i] = Double(); return arr; }
}
//  [java]

     import java.io.*;
public class Main{
  public static void main(String[] args){
    int D=1;
    int N=1;
    String buf1,buf2,buf3;
    try{
      BufferedReader br
          = new BufferedReader(new InputStreamReader(System.in));

      buf1 = br.readLine();
      buf2 = buf1.substring(0,buf1.indexOf(" "));
      buf3 = buf1.substring(buf1.indexOf(" ")+1);
      D= Integer.parseInt(buf2);
      N = Integer.parseInt(buf3);

  } catch(Exception e) {
      System.out.print("Error:" + e);
  }
    if(N<=100){
    if(D==0){
     if(N==100){System.out.println(N+1);}
     else{System.out.println(N);}}
     if(D==1){
       if(N==100){System.out.println(N*101);}
     else{System.out.println(N*100);}}
    if(D==2){
       if(N==100){System.out.println(N*10100);}
     else{System.out.println(N*10000);}}
    }


  }
}
//  [java]
import java.util.*;
public class Main {

	static void solve() {
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt(), b = sc.nextInt();
		System.out.println((int)(b*Math.pow(100,a)));
		sc.close();			
	}

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

}
//  [java]
import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
        int D = sc.nextInt();
        int N = sc.nextInt();
        //String S = sc.next();

        int a;
        
        a = (int)Math.pow(100, D) * N;
        if(N==100){
            a = (int)Math.pow(100, D) * (N+1)
        }
        System.out.println(a);
        
        
                
            

        }
        
        

        
        
        }
//  [java]
import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
        int D = sc.nextInt();
        int N = sc.nextInt();
        //String S = sc.next();

        int a;
        
        a = (int)Math.pow(100, D) * N;
        System.out.println(a);
        
        
                
            

        }
        
        

        
        
        }
//  [cpp]
#include<stdio.h>
int main() {
	int d, n;
	scanf("%d%d", &d, &n);
	int ans = 1;
	if (d == 1) {
		ans = 100;
	}
	if (d == 2) {
		ans = 10000;
	}
	if (n == 100) {
		n = 101;
	}
	printf("%d\n", ans*n);
	return 0;
}
//  [cpp]
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;

int main(){
    int D, N;
    cin >> D >> N;

    int tmp = 0;
    for(int i=0; i<N; i++){
        tmp++;
        if(tmp % 100 == 0) tmp++;
    }
    cout << tmp;

    for(int i=0; i<D; i++)
        cout << "00";
    
    cout << endl;

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

int main(){
  int D,N;
  int P=1;
  cin >> D >> N;
  if(D==0){
    P=1;
  }else if(D==1){
    P=100;
  }else if(D==2){
    P=10000;
  }
  if(N == 100){
    cout << 101*P << endl;
  }else{
    cout << N*P << endl;
  }
}
//  [cpp]
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int d, n, a;
    cin>>d>>n;

    a=pow(100, d);

    cout<<n*a<<endl;

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

int main()
{
       int d,n,x;
       cin>>d>>n;
       if((n<=100&&d==0) || (n<10 && d<2))
        cout<<n;
       else{
       for(int i=0;i<d;i++){
        x=n*100;
       n=x;
       }
       cout<<x;
       }
    return 0;
   }
//  [cpp]
/******************************************
* AUTHOR : ARPIT *
* NICK : arpitfalcon *
* INSTITUTION : BIT MESRA *
* Ab m game m hu. *
******************************************/

#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007 -
#define vll vector<ll>
#define vvll vector<vll>
#define pll pair<ll, ll>
#define vpll vector<pll>
#define vin                    \
    ll n;                      \
    cin >> n;                  \
    vector<ll> x(n);           \
    for (ll i = 0; i < n; i++) \
    cin >> x[i]
#define vout                   \
    for (ll i = 0; i < n; i++) \
    cout << x[i] << " "
#define T     \
    ll t = 1; \
    cin >> t; \
    while (t--)
#define ain                    \
    ll n, k;                   \
    cin >> n >> k;             \
    ll a[n];                   \
    for (ll z = 0; z < n; z++) \
    cin >> a[z]
#define aout                   \
    for (ll i = 0; i < n; i++) \
    cout << a[i] << " "
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define endl "\n"
#define deb(x) cout << #x << "=" << x << endl
#define deb2(x, y) cout << #x << "=" << x << "," << #y << "=" << y << endl
#define max3(a, b, c) max(a, max(b, c))
#define min3(a, b, c) min(a, min(b, c))
#define max4(a, b, c, d) max(a, max3(b, c, d))
#define min4(a, b, c, d) min(a, min3(b, c, d))
#define blink                \
    ios::sync_with_stdio(0); \
    cin.tie(0);              \
    cout.tie(0);
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const double PI = 3.141592653589793238463;

#define forn(i, n) for (ll(i) = 0; (i) < (n); ++(i))
#define for1(i, n) for (ll(i) = 1; (i) <= (n); ++(i))
#define forr(i, n) for (ll(i) = (n)-1; (i) >= 0; --(i))
#define forab(i, a, b, c) for (ll(i) = a; (i) <= (b); (i) += (c))

/*
__builtin_ffs(x)
  Number of set bits: __builtin_popcount(x)
  Number of leading zeroes: __builtin_clz(x)
  Number of trailing zeroes : __builtin_ctz(x)
*/

int main()
{
    blink
#ifndef ONLINE_JUDGE
        freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif

    // your code goes here
    long long int d, n;
    cin >> d >> n;

    if (n % 100 == 0)
        cout << (n + 1) * pow(100, d);
    else
        cout << n * pow(100, d);

    return 0;
}
//  [c]
#include<stdio.h>
int main()
{
	int d,n;

	scanf("%d%d",&d,&n);

	if(d==0){
		if(n==100){
			printf("101\n");
			return 0;
		}
		printf("%d",n);
		return 0;
	}
	if(d==1){
		if(n==100){
			printf("10100\n");
			return 0;
		}
		printf("%d",n*100);
		return 0;
	}
	if(d==2){
		if(n==100){
			printf("1010000\n");
			return 0;
		}
		printf("%ld",n*10000);
		return 0;
	}
}
//  [c]
#include <stdio.h>

int main(int argc, char** argv) {
	int i = 0;
	int ans = 1;
	int d, n;
	scanf("%d %d", &d, &n);

	if (d == 0) {
		if (n == 100) {
			ans = 101;
		} else  {
			ans = n * 1;
		}

		printf("%d\n", ans);
		return 0;
	} else if (d == 1) {
		if (n == 100) {
			ans = 10100;
		} else {
			ans = n * 100;
		}
		printf("%d\n", ans);
		return 0;
	} else {
		if (n == 100) {
			ans = 1010000;
		} else {
			ans = n * 10000;
		}
		printf("%d\n", ans);
		return 0;
	}
	
	return 0;
}
//  [c]
#include <stdio.h>

int main()
{
        int D = 0;
        int N = 0;

        scanf ("%d %d", &D, &N);

        switch(D)
        {
                case 0:
                        if( N < 100 )
                                printf ("%d\n", 1 * N);
                        else
                                printf ("%d\n", 1 * (N + 1));
                        break;
                case 1:
                        if( N < 100 )
                                printf ("%d\n", 100 * N);
                        else
                                printf ("%d\n", 100 * (N + 1));
                        break;
                case 2:
                        if( N < 100 )
                                printf ("%d\n", 10000 * N);
                        else
                                printf ("%d\n", 10000 * (N + 1));
                        break;
        }

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

//コンパイラ最適化
#pragma GCC optimize("Ofast")

//マクロ
//forループ
//引数は、(ループ内変数,動く範囲)か(ループ内変数,始めの数,終わりの数)、のどちらか
//Dがついてないものはループ変数は1ずつインクリメントされ、Dがついてるものはループ変数は1ずつデクリメントされる
//FORAは範囲for文(使いにくかったら消す)
#define REP(i, n) for (ll i = 0; i < ll(n); i++)
#define REPD(i, n) for (ll i = n - 1; i >= 0; i--)
#define FOR(i, a, b) for (ll i = a; i <= ll(b); i++)
#define FORD(i, a, b) for (ll i = a; i >= ll(b); i--)
#define FORA(i, I) for (const auto &i : I)
//xにはvectorなどのコンテナ
#define ALL(x) x.begin(), x.end()
#define SIZE(x) ll(x.size())
//定数
#define INF 1000000000000 //10^12:∞
#define MOD 1000000007    //10^9+7:合同式の法
#define MAXR 100000       //10^5:配列の最大のrange
//略記
#define PB push_back //挿入
#define MP make_pair //pairのコンストラクタ
#define F first      //pairの一つ目の要素
#define S second     //pairの二つ目の要素

typedef long long ll;

using namespace std;
int main()
{
    int D, N;
    cin >> N >> N;
    int i;
    int n;
    if (D == 0)
    {
        cout << N;
    }
    else if (D == 1)
    {
        cout << N * 100;
    }
    else
    {
        cout << N * 10000;
    }
    return 0;
}
//  [c]
#include<stdio.h>
int main(void)
{
	long long int x,d,n;
	scanf("%lld %lld",&d,&n);
	if(d==0) x=n;
	else if(d==1) x=n*100;
	else x=n*10000;
	printf("%lld\n",x);
	return 0;
}
//  [c]
#include<stdio.h>
int main(void)
{
	long long int x,d,n;
	scanf("%d %d",&lld,&lln);
	if(d==0) x=n;
	else if(d==1) x=n*100;
	else x=n*10000;
	printf("%lld\n",x);
	return 0;
}
//  [javascript]
function main(input){
  var args = input.split(" ").map(x=>parseInt(x));
  var divCount = args[0];
  var index = args[1];
  var answer = Math.pow(100,divCount)*index;
  if(index===100){
  	answer+=Math.pow(100,divCount);
  }
  console.log(answer);
}



main(require("fs").readFileSync("/dev/stdin","utf-8"));
//  [javascript]
function Main(input) {
    input = input.split(" ").map(Number);
    if (input[1] == 100) input[1]++;
    console.log(input[1] * Math.pow(100, input[0]));
}
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
// inputに入力データ全体が入る
function Main(input) {
	// 1行目がinput[0], 2行目がinput[1], …に入る
	input = input.split(" ");
	d=~~input[0]
	n=~~input[1]
	bai = 1
	if(d==0){
		if(n<100){
			console.log('%d',n)
		}else{
			console.log('%d','101')
		}
	}else if(d==1){
		if(n<100){
			console.log('%d',n*100)
		}else{
			console.log('%d','10100')
		}
	}else{
		if(n<100){
			console.log('%d',n*10000)
		}else{
			console.log('%d','1010000')
		}
	}
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [javascript]
const main = stdin => {
  const input = stdin.trim().split('\n')
  const [D, N] = input[0].split(' ').map(x => parseInt(x))

  if (D === 0) {
    console.log(N)
  } else if (D === 1) {
    console.log(N * 100)
  } else {
    console.log(N * 10000)
  }
}


// 標準入力
main(require("fs").readFileSync("/dev/stdin", "utf8"))
//  [javascript]
function main(input) {
  const args = input.split(' ').map(n => parseInt(n, 10));
  
  const D = args[0];
  const N = args[1];
  
  switch(D) {
    case 0:
      console.log(N);
      break;
    case 1:
      console.log(N * 100);
      break;
    case 2:
      console.log(N * 10000);
      break;
    default:
      break;
  }
}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [javascript]
'use strict'

const Main = (input) => {
  const tmp = input.trim().split(' ')
  const D = parseInt(tmp[0])
  const N = parseInt(tmp[1])

  let result = (N - Math.floor((N - 1) / 99)) * Math.pow(100, D)

  console.log(result)
  return result
}

Main(require('fs').readFileSync('/dev/stdin', 'utf8'))
//  [go]
package main

import (
	"fmt"
)

func main() {
	var d, n int
	fmt.Scan(&d, &n)

	if n == 100 {
		n = 101
	}
	var ans int
	switch d {
	case 0:
		ans = 1 * n
	case 1:
		ans = 100 * n
	case 2:
		ans = 10000 * n
	}
	fmt.Println(ans)
}
//  [go]
// https://atcoder.jp/contests/abc100/tasks/abc100_b

package main

import (
  "bufio"
  "bytes"
  "fmt"
  "math"
  "os"
  "strconv"
  "strings"
)

func main() {
  io := NewIo()
  D := io.NextInt()
  N := io.NextInt()

  order := N

  if N == 100 {
    order++
  }

  result := order * int(math.Pow(100,float64(D)))

  fmt.Println(result)
}

type Io struct {
  reader *bufio.Reader
  writer *bufio.Writer
  tokens []string
  nextToken int
}

func NewIo() *Io {
  return &Io{
    reader: bufio.NewReader(os.Stdin),
    writer: bufio.NewWriter(os.Stdout),
  }
}

func (io *Io) Next() string {
  if io.nextToken >= len(io.tokens) {
    line := io.NextLine()
    io.tokens = strings.Fields(line)
    io.nextToken = 0
  }

  res := io.tokens[io.nextToken]
  io.nextToken++
  return res
}

func (io *Io) NextInt() int {
  res, err := strconv.Atoi(io.Next())
  if err != nil {
    panic(err)
  }
  return res
}

func (io *Io) Println(a ...interface{}) {
  var values []string
  for i := 0; i < len(a); i++ {
    values = append(values, "%v")
  }
  io.Printfln(strings.Join(values, " "), a...)
}

func (io *Io) Printfln(format string, a ...interface{}) {
  fmt.Fprintf(io.writer, format+"\n", a...)
}

func (io *Io) NextLine() string {
  if io.nextToken < len(io.tokens) {
    panic("io.nextToken < len(io.tokens)")
  }

  var buffer bytes.Buffer

  for {
    line, isPrefix, err := io.reader.ReadLine()
    if err != nil {
      panic(err)
    }
    buffer.Write(line)
    if !isPrefix {
      break
    }
  }

  return buffer.String()
}
//  [go]
package main

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

func out(x ...interface{}) {
	fmt.Println(x...)
}

var sc = bufio.NewScanner(os.Stdin)

func getInt() int {
	sc.Scan()
	i, e := strconv.Atoi(sc.Text())
	if e != nil {
		panic(e)
	}
	return i
}

func getString() string {
	sc.Scan()
	return sc.Text()
}

// min, max, asub, absなど基本関数
func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func asub(a, b int) int {
	if a > b {
		return a - b
	}
	return b - a
}

func abs(a int) int {
	if a >= 0 {
		return a
	}
	return -a
}

func main() {
	sc.Split(bufio.ScanWords)
	D, N := getInt(), getInt()

	x := 1
	for i := 0; i < D; i++ {
		x *= 100
	}

	y := 0
	for i := 0; i < N; i++ {
		y += x
	}

	if x*100 == y {
		y += x
	}
	out(y)
}
//  [go]
package main

import (
	"fmt"
	"math"
)

func main() {
	var d, n float64
	fmt.Scan(&d, &n)

	if d == 100 {
		fmt.Println(math.Pow(101, d) * n)
	} else {
		fmt.Println(math.Pow(100, d) * n)
	}
}
//  [go]
package main

import (
	"fmt"
	"math"
)

func main() {
	var d, n int
	fmt.Scan(&d, &n)

	fmt.Println((n - (n-1)/99) * int(math.Pow(100, float64(d))))
}
//  [go]
package main

import (
	"fmt"
	"math"
)

func main() {
	var d, n float64
	fmt.Scan(&d, &n)

	if d == 0 && n < 100 {
		fmt.Println(n)
		return
	}
	if d == 0 && n == 100 {
		fmt.Println(101)
		return
	}

	fmt.Println(int(math.Pow(100, d) * n))
}
//  [ruby]
d,n = gets.split.map(&:to_i)
start = 100**d
if n != 100
  puts start * n
else
  puts start * 101
end
//  [ruby]
d, n = gets.split.map(&:to_i)
n = 101 if n == 100
puts (100**d) * n
//  [ruby]
d,n=gets.split.map(&:to_i)
if n==100 then
  puts 100**d*(n+1)
else
  puts 100**d*n
end
//  [ruby]
a,b=gets.split.map &:to_i
puts b==100? 100**a*b+1 : 100**a*b
//  [ruby]
a,b=gets.split.map &:to_i
puts 100**a*b
//  [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")
}

fn main() {
    let d: usize = read();
    let mut c: usize = read();
    if 100 == c {
        c += 1;
    }
    println!("{}", 100_u32.pow(d as u32) * c as u32);
}
//  [rust]
use std::io;

fn main() {
    let mut buf = String::new();
    io::stdin().read_line(&mut buf).unwrap();
    let mut iter = buf.split_whitespace();

    let d: i64 = iter.next().unwrap().parse().unwrap();
    let n: i64 = iter.next().unwrap().parse().unwrap();

    let base_num: i64 = 100i64.pow(d as u32);

    if n == 100 {
        println!("{}", base_num * n + base_num);
    } else {
        println!("{}", base_num * n);
    }
}
//  [rust]
fn read_multi<T: std::str::FromStr>() -> Vec<T> {
    let mut s = std::string::String::new();
    std::io::stdin().read_line(&mut s).ok();
    s.trim().split_whitespace()
        .map(|e| e.parse().ok().unwrap()).collect()
}

fn main() {
    //println!("Hello, world!");
    let vn: Vec<i32> = read_multi(); //i32
    //println!("{:?}", vn);

    let res: i32 = 100_i32.pow(vn[0] as u32) * vn[1];
    println!("{}", res);
}
//  [rust]
use proconio::input;
 
fn main() {
  input! {
    d: u32,
    n: usize
  }
  println!("{}", n * 100usize.pow(d));
}
//  [rust]
#[allow(unused_imports)] use proconio::{input, marker::{Bytes, Chars, Usize1, Isize1}};
#[allow(unused_imports)] use std::cmp::{min, max};
#[allow(unused_imports)] use superslice::Ext as _;

#[proconio::fastout]
fn main() {
	input! {
		d: usize,
		n: usize,
	}

	match d {
		0 => {
			if n == 100 {
				println!("{}", n+1);
			}
			else {
				println!("{}", n);
			}
		},
		1 => println!("{}", 100*n),
		_ => println!("{}", 100*100*n),
	}
}
//  [swift]
var i=readLine()!.characters.split(" ").map{Int(String($0))!};print((0..<i[0]).reduce(1){$0.0*100}*(i[1]>99 ?101:i[1]))
//  [swift]
var i=readLine()!.characters.split(" ").map{Int(String($0))!};if(i[1]>99){i[1]++};print((0..<i[0]).reduce(1){$0.0*100}*i[1])
//  [swift]
import Foundation
func toTuple<T>(_ args: [T]) -> (T, T) { (args[0], args[1]) }
func readInts() -> [Int] { readLine()!.split(separator: " ").map { Int($0)! } }

let (d, n) = toTuple(readInts())
var ans = 0
var count = 0
if d == 0 {
  while count < n {
    ans += 1
    if ans % 100 != 0 {
      count += 1
    }
  }
} else if d == 1 {
  while count < n {
    ans += 100
    if !(ans / 100).isMultiple(of: 100) {
      count += 1
    }
  }
} else {
  while count < n {
    ans += 10000
    if !(ans / 10000).isMultiple(of: 100) {
      count += 1
    }
  }
}
print(ans)
//  [swift]
var i=readLine()!.characters.split(" ").map{Int(String($0))!};if(i[0]>99){i[0]++};print((0..<i[0]).reduce(1){$0.0*100}*i[1])
//  [swift]
let i=readLine()!.characters.split(" ").map{Int(String($0))!};print((0..<i[0]).reduce(1){$0.0*100}*i[1])
//  [swift]
let i=readLine()!.characters.split(" ").map{Int("\($0)")!};print((0..<i[0]).reduce(1){$0.0*100}*i[1])
//  [typescript]
function main(input) {
	const [d, n] = input.trim().split(" ").map(n => Number(n));
  	const num = n === 100 ? n + 1 : n;
  	const result = (100 ** d) * num;
  	console.log(result);
}
main(require("fs").readFileSync("/dev/stdin", "utf8"));
//  [typescript]
import { ifError } from "assert";

const input=require('fs').readFileSync('/dev/stdin','utf8').split(/[\s]/);const tn=():number=>{const a=input[0];input.shift();return Number(a)};const tnn=(n:number):number[]=>{const a=[];for(let i=0;i<n;i++){a.push(tn())}return a};const ts=():string=>{const a=input[0];input.shift();return String(a)};const tss=(n:number):string[]=>{const a=[];for(let i=0;i<n;i++){a.push(ts())}return a};const tc=():string=>{let a=input[0].split('');const b=a[0];a.shift();if(a.length>0){input[0]=a.join('')}else{input.shift()}return String(b)};const tcc=(n:number):string[]=>{const a=[];for(let i=0;i<n;i++){a.push(tc())}return a};const to=(...arg)=>{console.log(...arg)};const abs=(a)=>{return Math.abs(a)};const min=(...a)=>{return Math.min(...a)};const max=(...a)=>{return Math.max(...a)};const floor=(a)=>{return Math.floor(a)};const asc=(ar:number[])=>{return ar.sort((a,b)=>{return a-b})};const desc=(ar:number[])=>{return ar.sort((a,b)=>{return b-a})};const sw=(a,arr:any[],op:'=='|'>='|'>'|'<='|'<'='==')=>{for(let i=0;i<arr.length-1;i+=2){if(eval(a+op+arr[i])){return arr[i+1];}}return arr[arr.length-1]};const near=(n:number,arr:number[]):number=>{let ne=arr[0],ni=0;for(let i=1;i<arr.length;i++){if(Math.abs(n-ne)>Math.abs(n-arr[i])){ne=arr[i];ni=i}}return ni};const objvs =(a)=>{const b=[];for(const v in a){b.push(a[v])}return b};
const main=()=>{
  let [d,n]=tnn(2)
  if(d==0&&n==100)to(101)
  else if(d==1&&n==100)to(10100)
  else if(d==2&&n==100)to(1010000)
  else to(d==0?n:d==1?100*n:10000*n)
}
main()
//  [typescript]
const main = (input: void) => {
  const D: number = parseInt(input.split(' ')[0],10);
  const N: number = parseInt(input.split(' ')[1],10);
  let ans: number;

  if (D === 0){
    ans = N * 1;
  } else if (D === 1) {
    ans = N * 100;
  } else if (D === 2) {
    ans = N * 10000;
  }
  if (N === 100) {
    ans = ans/N;
    ans = ans * (N+1);
  }
  console.log(ans);
}

main(require('fs').readFileSync('/dev/stdin', 'utf8'));
//  [typescript]
import { readFileSync } from "fs";

const read = () =>
  readFileSync(0, "utf8")
    .split("\n")
    .map((line) => line.split(" "));

const main = (input: string[][]) => {
  const [D, N] = input[0].map(Number);

  return 100 ** D * N;
};

console.log(main(read()));
//  [typescript]
import * as fs from 'fs'
import {debug} from '../../../util'

const input = fs.readFileSync('/dev/stdin', 'utf8').trim()

const output = (x: string | number | boolean): void => console.log(x)
const splitLine = (string: string): string[] => string.split('\n')
const splitBlank = (string: string): string[] => string.split(' ')
const toNumbers = (array: string[]): number[] => array.map(v => Number(v))
const range = (end: number, start :number = 0): number[] => [...Array(end - start)].map((v, i) => i + start)

// debug(input)

/* ここから */
const [D, N] = toNumbers(splitBlank(input))

output(100 ** D * N)
//  [typescript]
import { ifError } from "assert";

const input=require('fs').readFileSync('/dev/stdin','utf8').split(/[\s]/);const tn=():number=>{const a=input[0];input.shift();return Number(a)};const tnn=(n:number):number[]=>{const a=[];for(let i=0;i<n;i++){a.push(tn())}return a};const ts=():string=>{const a=input[0];input.shift();return String(a)};const tss=(n:number):string[]=>{const a=[];for(let i=0;i<n;i++){a.push(ts())}return a};const tc=():string=>{let a=input[0].split('');const b=a[0];a.shift();if(a.length>0){input[0]=a.join('')}else{input.shift()}return String(b)};const tcc=(n:number):string[]=>{const a=[];for(let i=0;i<n;i++){a.push(tc())}return a};const to=(...arg)=>{console.log(...arg)};const abs=(a)=>{return Math.abs(a)};const min=(...a)=>{return Math.min(...a)};const max=(...a)=>{return Math.max(...a)};const floor=(a)=>{return Math.floor(a)};const asc=(ar:number[])=>{return ar.sort((a,b)=>{return a-b})};const desc=(ar:number[])=>{return ar.sort((a,b)=>{return b-a})};const sw=(a,arr:any[],op:'=='|'>='|'>'|'<='|'<'='==')=>{for(let i=0;i<arr.length-1;i+=2){if(eval(a+op+arr[i])){return arr[i+1];}}return arr[arr.length-1]};const near=(n:number,arr:number[]):number=>{let ne=arr[0],ni=0;for(let i=1;i<arr.length;i++){if(Math.abs(n-ne)>Math.abs(n-arr[i])){ne=arr[i];ni=i}}return ni};const objvs =(a)=>{const b=[];for(const v in a){b.push(a[v])}return b};
const main=()=>{
  let [d,n]=tnn(2)
  if(d==1&&n==100)to(10100)
  else if(d==2&&n==100)to(1010000)
  else to(d==0?n:d==1?100*n:10000*n)
}
main()
//  [python]
A,B,C=map(int, input().split())
R=A-B
print((C-R)*(C>R))
//  [python]
a, b, c = map(int, input().split())

print(max(0, c - a + b))
//  [python]
a,b,c=map(int,input().split())
print(max(0,b+c-a))
//  [python]
a,b,c = map(int,input().split())
q = a-b
ans = c - ans

if ans < 0:
  ans = 0
  
print(ans)
//  [python]
a, b, c = map(int, input().split())

print(a + b < c)
//  [python]
A,B,C=map(int,input().split())
if A>B:
  if (A-B)>=C:
    print(0)
  else:
    print(C-A+B)
//  [java]
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	public static void main(String[] args) throws Exception {
		// TODO 自動生成されたメソッド・スタブ
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String W = in.readLine();
		String[] ws = W.split(" ");
		int A = Integer.parseInt(ws[0]);
		int B = Integer.parseInt(ws[1]);
		int C = Integer.parseInt(ws[2]);

		int x = A-B;
		int y = C-x;
		if(y<=0){
			y=0;
		}
		System.out.println(y);


	}

}