import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String n = sc.nextLine().trim();

        // Input validation
        if (n == null || n.isEmpty() || n.length() > 18) {
            System.out.println("Invalid input");
            return;
        }

        System.out.println(closestPalindrome(n));
    }

    public static String closestPalindrome(String n) {
        long num = Long.parseLong(n);

        // Special cases
        if (num <= 10) {           // e.g. 1→0, 10→9
            return String.valueOf(num - 1);
        }
        if (num == 11) return "9"; // 11→9

        List<Long> candidates = new ArrayList<>();
        int len = n.length();
        long prefix = Long.parseLong(n.substring(0, (len + 1) / 2));

        // Make palindromes by mirroring prefix-1, prefix, prefix+1
        for (long i = prefix - 1; i <= prefix + 1; i++) {
            String p = String.valueOf(i);
            String candidate = makePalindrome(p, len % 2 == 1);
            candidates.add(Long.parseLong(candidate));
        }

        // Edge case palindromes: 10^(len-1)-1 and 10^len+1
        candidates.add((long)Math.pow(10, len - 1) - 1);
        candidates.add((long)Math.pow(10, len) + 1);

        long closest = -1;
        long diff = Long.MAX_VALUE;

        for (long cand : candidates) {
            if (cand == num) continue; // exclude itself
            long curDiff = Math.abs(cand - num);
            if (curDiff < diff || (curDiff == diff && cand < closest)) {
                diff = curDiff;
                closest = cand;
            }
        }

        return String.valueOf(closest);
    }

    // Helper: build a palindrome from prefix
    private static String makePalindrome(String prefix, boolean oddLength) {
        StringBuilder sb = new StringBuilder(prefix);
        String rev = new StringBuilder(
                prefix.substring(0, oddLength ? prefix.length() - 1 : prefix.length())
        ).reverse().toString();
        return sb.append(rev).toString();
    }
}