import java.util.*; import java.util.zip.*; import java.util.List; import java.util.regex.*; import java.util.concurrent.*; import java.util.concurrent.atomic.*; import java.util.concurrent.locks.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.*; import javax.swing.table.*; import java.io.*; import java.net.*; import java.lang.reflect.*; import java.lang.ref.*; import java.lang.management.*; import java.security.*; import java.security.spec.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.imageio.*; import java.math.*; class main { static Frequency pianoKeyFrequency(double key) { return toFrequency(440*pow(plusOneSemitone(), key-49)); } static Frequency toFrequency(double freq) { return new Frequency(freq); } static double pow(double a, double b) { return Math.pow(a, b); } static float pow(float a, float b) { return (float) Math.pow(a, b); } static BigInteger pow(BigInteger a, int b) { return a.pow(b); } static double plusOneSemitone() { return nthRoot(12, 2); } static double plusOneSemitone(double frequency) { return plusOneSemitone()*frequency; } static double nthRoot(int n, double x) { return Math.pow(x, 1.0/n); } static class Frequency implements IFieldsToList{ double frequency; Frequency() {} public boolean equals(Object o) { if (!(o instanceof Frequency)) return false; Frequency __1 = (Frequency) o; return frequency == __1.frequency; } public int hashCode() { int h = 1933944124; h = boostHashCombine(h, _hashCode(frequency)); return h; } public Object[] _fieldsToList() { return new Object[] {frequency}; } double interval; Frequency(double frequency) { this.frequency = frequency; interval = doubleRatio(1, frequency); } public String toString() { return frequency + " Hz"; } } static interface IFieldsToList { Object[] _fieldsToList(); } static int boostHashCombine(int a, int b) { return a ^ (b + 0x9e3779b9 + (a << 6) + (a >> 2)); } static int _hashCode(Object a) { return a == null ? 0 : a.hashCode(); } static double doubleRatio(double x, double y) { return y == 0 ? 0 : x/y; } }