import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;

class SystemInBug {
    public static void main(String[] args) {
        // stdin.encoding is for Java 25
        final String encodingName = System.getProperty("stdin.encoding",
                // stdout.encoding is for Java 21, and sun.stdout.encoding is for Java 8, 11,
                // and 17
                System.getProperty("stdout.encoding", System.getProperty("sun.stdout.encoding", "UTF-8")));
        // Java 8 has a bug that it doesn't recognize "cp65001" as an alias for "UTF-8"
        final Charset encoding = Charset.forName(encodingName.equals("cp65001") ? "UTF-8" : encodingName);
        System.err.print("Input: ");

        try {
            // Java 8 doesn't support System.in.readAllBytes()
            final ArrayList<Byte> bytesList = new ArrayList<>();
            int b;
            while ((b = System.in.read()) != -1) {
                bytesList.add((byte) b);
            }
            final byte[] bytes = new byte[bytesList.size()];
            for (int i = 0; i < bytesList.size(); i++) {
                bytes[i] = bytesList.get(i);
            }

            final String str = new String(bytes, encoding);
            final String[] hexBytes = new String[bytes.length];
            for (int i = 0; i < bytes.length; i++) {
                hexBytes[i] = String.format("%02X", bytes[i]);
            }
            System.out.println("Array: " + String.join(" ", String.join(" ", hexBytes)));
            System.out.println("String: " + str);
        } catch (IOException e) {
            e.printStackTrace(System.err);
            System.exit(1);
        }
    }
} 