2 timers in Aruino Uno

I created 2 timers, with frequencies 8kHz and 0.5Hz. 8kHz is supposed to increase the count of a variable everytime it counts, and 0.5Hz is supposed to print out the count variable and reset it to 1. I was expecting the number to be 16000 (since 8k/0.5=16000), but I keep getting 25806. Here is the code:

volatile int counter = 1;
void setup() {
// put your setup code here, to run once:

Serial.begin(9600);

cli(); // disable global interrupts

//8 KHz
TCCR0A = 0;
TCCR0B = 0;
TCNT0 = 0; // initialize the counter from 0
OCR0A = 30; // sets the counter compare value
TCCR0A |= (1<<WGM01); // enable the CTC mode
TCCR0B |= (1<<CS01) | (1<<CS00); //sets the control scale bits for the timer
TIMSK0 |= (1<<OCIE0A); //enable the interrupt

//0.5 KHz

// reset Timer 1
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
/////////////////

OCR1A = 49999; // set the compare match register

TCCR1B |= (1 << WGM12); // turn on CTC mode

TCCR1B |= (1 << CS12) | (1 << CS10); // set prescaler

TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt

sei(); // enable interrupts
}

ISR(TIMER0_COMPA_vect) {
counter+=1;
}

// function to be called when Timer 1 interrupts
ISR(TIMER1_COMPA_vect) {
Serial.println(counter);
counter = 1;
}

void loop() {
// put your main code here, to run repeatedly:
}