<?xml version="1.0" encoding="utf-8"?>
<InstanceReport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>1.0.0.3</Version>
  <hasSegments>false</hasSegments>
  <ReportName>Consolidated Statements of Income (USD $)</ReportName>
  <RoundingOption>In Thousands, except Per Share data</RoundingOption>
  <Columns>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>1</Id>
      <Labels>
        <Label Id="1" Label="12 Months Ended" />
        <Label Id="2" Label="Dec. 31, 2009" />
      </Labels>
      <CurrencySymbol>$</CurrencySymbol>
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>Shares</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDperShare</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
    </Column>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>2</Id>
      <Labels>
        <Label Id="1" Label="12 Months Ended" />
        <Label Id="2" Label="Dec. 31, 2008" />
      </Labels>
      <CurrencySymbol>$</CurrencySymbol>
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>Shares</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDperShare</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
    </Column>
    <Column>
      <LabelColumn>false</LabelColumn>
      <Id>3</Id>
      <Labels>
        <Label Id="1" Label="12 Months Ended" />
        <Label Id="2" Label="Dec. 31, 2007" />
      </Labels>
      <CurrencySymbol>$</CurrencySymbol>
      <hasSegments>false</hasSegments>
      <hasScenarios>false</hasScenarios>
      <Segments />
      <Scenarios />
      <Units>
        <Unit>
          <UnitID>Shares</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USD</UnitID>
          <UnitType>Standard</UnitType>
          <StandardMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </StandardMeasure>
          <Scale>0</Scale>
        </Unit>
        <Unit>
          <UnitID>USDperShare</UnitID>
          <UnitType>Divide</UnitType>
          <NumeratorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/iso4217</MeasureSchema>
            <MeasureValue>USD</MeasureValue>
            <MeasureNamespace>iso4217</MeasureNamespace>
          </NumeratorMeasure>
          <DenominatorMeasure>
            <MeasureSchema>http://www.xbrl.org/2003/instance</MeasureSchema>
            <MeasureValue>shares</MeasureValue>
            <MeasureNamespace>xbrli</MeasureNamespace>
          </DenominatorMeasure>
          <Scale>0</Scale>
        </Unit>
      </Units>
    </Column>
  </Columns>
  <Rows>
    <Row>
      <Id>5</Id>
      <Label>Revenues</Label>
      <Level>3</Level>
      <ElementName>us-gaap_Revenues</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>credit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>148998000</NumericAmount>
          <RoundedNumericAmount>148998</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>107147000</NumericAmount>
          <RoundedNumericAmount>107147</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>69095000</NumericAmount>
          <RoundedNumericAmount>69095</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>6</Id>
      <Label>Costs and expenses:</Label>
      <Level>3</Level>
      <ElementName>us-gaap_CostsAndExpensesAbstract</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>7</Id>
      <Label>Instructional costs and services</Label>
      <Level>4</Level>
      <ElementName>apei_InstructionalCostsAndExpenses</ElementName>
      <ElementPrefix>apei</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>Costs directly attributable to educational services, including salaries and benefits for full-time faculty, administrators...</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>58383000</NumericAmount>
          <RoundedNumericAmount>58383</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>43561000</NumericAmount>
          <RoundedNumericAmount>43561</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>29479000</NumericAmount>
          <RoundedNumericAmount>29479</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>Costs directly attributable to educational services, including salaries and benefits for full-time faculty, administrators and academic advisors, and costs associated with adjunct faculty. Also includes costs for educational supplies such as books, costs associated with academic records and graduation, and other university services such as evaluating transcripts.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>8</Id>
      <Label>Selling and promotional</Label>
      <Level>4</Level>
      <ElementName>us-gaap_SellingAndMarketingExpense</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>20479000</NumericAmount>
          <RoundedNumericAmount>20479</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>12361000</NumericAmount>
          <RoundedNumericAmount>12361</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>6765000</NumericAmount>
          <RoundedNumericAmount>6765</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>9</Id>
      <Label>General and administrative</Label>
      <Level>4</Level>
      <ElementName>us-gaap_GeneralAndAdministrativeExpense</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>25039000</NumericAmount>
          <RoundedNumericAmount>25039</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>21302000</NumericAmount>
          <RoundedNumericAmount>21302</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>15335000</NumericAmount>
          <RoundedNumericAmount>15335</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>10</Id>
      <Label>Depreciation and amortization</Label>
      <Level>4</Level>
      <ElementName>us-gaap_DepreciationAndAmortization</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>5231000</NumericAmount>
          <RoundedNumericAmount>5231</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>4235000</NumericAmount>
          <RoundedNumericAmount>4235</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>2825000</NumericAmount>
          <RoundedNumericAmount>2825</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>11</Id>
      <Label>Total costs and expenses</Label>
      <Level>4</Level>
      <ElementName>us-gaap_CostsAndExpenses</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>109132000</NumericAmount>
          <RoundedNumericAmount>109132</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>81459000</NumericAmount>
          <RoundedNumericAmount>81459</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>54404000</NumericAmount>
          <RoundedNumericAmount>54404</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>true</IsTotalLabel>
    </Row>
    <Row>
      <Id>12</Id>
      <Label>Income before interest income and income taxes</Label>
      <Level>3</Level>
      <ElementName>us-gaap_OperatingIncomeLoss</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>credit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>39866000</NumericAmount>
          <RoundedNumericAmount>39866</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>25688000</NumericAmount>
          <RoundedNumericAmount>25688</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>14691000</NumericAmount>
          <RoundedNumericAmount>14691</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>true</IsTotalLabel>
    </Row>
    <Row>
      <Id>13</Id>
      <Label>Interest income, net</Label>
      <Level>3</Level>
      <ElementName>us-gaap_InvestmentIncomeInterest</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>credit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>94000</NumericAmount>
          <RoundedNumericAmount>94</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>706000</NumericAmount>
          <RoundedNumericAmount>706</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>888000</NumericAmount>
          <RoundedNumericAmount>888</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>14</Id>
      <Label>Income before income taxes</Label>
      <Level>3</Level>
      <ElementName>us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>credit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>39960000</NumericAmount>
          <RoundedNumericAmount>39960</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>26394000</NumericAmount>
          <RoundedNumericAmount>26394</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>15579000</NumericAmount>
          <RoundedNumericAmount>15579</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>true</IsTotalLabel>
    </Row>
    <Row>
      <Id>15</Id>
      <Label>Income tax expense</Label>
      <Level>3</Level>
      <ElementName>us-gaap_IncomeTaxExpenseBenefit</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>debit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>16017000</NumericAmount>
          <RoundedNumericAmount>16017</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>10207000</NumericAmount>
          <RoundedNumericAmount>10207</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>6829000</NumericAmount>
          <RoundedNumericAmount>6829</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>16</Id>
      <Label>Net income</Label>
      <Level>3</Level>
      <ElementName>us-gaap_NetIncomeLoss</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>credit</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>monetary</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>23943000</NumericAmount>
          <RoundedNumericAmount>23943</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>16187000</NumericAmount>
          <RoundedNumericAmount>16187</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>8750000</NumericAmount>
          <RoundedNumericAmount>8750</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>true</IsTotalLabel>
    </Row>
    <Row>
      <Id>17</Id>
      <Label>Net income attributable to common stockholders per common share:</Label>
      <Level>3</Level>
      <ElementName>apei_NetIncomePerCommonShareAbstract</ElementName>
      <ElementPrefix>apei</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>18</Id>
      <Label>Basic</Label>
      <Level>4</Level>
      <ElementName>us-gaap_EarningsPerShareBasic</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>decimal</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>true</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>1.32</NumericAmount>
          <RoundedNumericAmount>1.32</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>0.91</NumericAmount>
          <RoundedNumericAmount>0.91</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>0.69</NumericAmount>
          <RoundedNumericAmount>0.69</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>19</Id>
      <Label>Diluted</Label>
      <Level>4</Level>
      <ElementName>us-gaap_EarningsPerShareDiluted</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>decimal</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>true</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>1.27</NumericAmount>
          <RoundedNumericAmount>1.27</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>0.86</NumericAmount>
          <RoundedNumericAmount>0.86</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>true</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>0.64</NumericAmount>
          <RoundedNumericAmount>0.64</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>20</Id>
      <Label>Weighted average number of shares outstanding:</Label>
      <Level>3</Level>
      <ElementName>apei_WeightedAverageNumberOfCommonSharesAbstract</ElementName>
      <ElementPrefix>apei</ElementPrefix>
      <IsBaseElement>false</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>string</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>true</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>false</IsNumeric>
          <NumericAmount>0</NumericAmount>
          <RoundedNumericAmount>0</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>21</Id>
      <Label>Basic</Label>
      <Level>4</Level>
      <ElementName>us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>shares</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>18167000</NumericAmount>
          <RoundedNumericAmount>18167</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>17840000</NumericAmount>
          <RoundedNumericAmount>17840</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>12759000</NumericAmount>
          <RoundedNumericAmount>12759</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
    <Row>
      <Id>22</Id>
      <Label>Diluted</Label>
      <Level>4</Level>
      <ElementName>us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</ElementName>
      <ElementPrefix>us-gaap</ElementPrefix>
      <IsBaseElement>true</IsBaseElement>
      <BalanceType>na</BalanceType>
      <PeriodType>duration</PeriodType>
      <ElementDataType>shares</ElementDataType>
      <ShortDefinition>No definition available.</ShortDefinition>
      <IsReportTitle>false</IsReportTitle>
      <IsSegmentTitle>false</IsSegmentTitle>
      <IsSubReportEnd>false</IsSubReportEnd>
      <IsCalendarTitle>false</IsCalendarTitle>
      <IsTuple>false</IsTuple>
      <IsAbstractGroupTitle>false</IsAbstractGroupTitle>
      <IsBeginningBalance>false</IsBeginningBalance>
      <IsEndingBalance>false</IsEndingBalance>
      <IsEPS>false</IsEPS>
      <Cells>
        <Cell>
          <Id>1</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>18906000</NumericAmount>
          <RoundedNumericAmount>18906</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>2</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>18822000</NumericAmount>
          <RoundedNumericAmount>18822</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
        <Cell>
          <Id>3</Id>
          <ShowCurrencySymbol>false</ShowCurrencySymbol>
          <IsNumeric>true</IsNumeric>
          <NumericAmount>13601000</NumericAmount>
          <RoundedNumericAmount>13601</RoundedNumericAmount>
          <NonNumbericText />
          <NonNumericTextHeader />
          <FootnoteIndexer />
          <hasSegments>false</hasSegments>
          <hasScenarios>false</hasScenarios>
        </Cell>
      </Cells>
      <ElementDefenition>No definition available.</ElementDefenition>
      <ElementReferences>No authoritative reference available.</ElementReferences>
      <IsTotalLabel>false</IsTotalLabel>
    </Row>
  </Rows>
  <Footnotes />
  <ComparabilityReport>false</ComparabilityReport>
  <NumberOfCols>3</NumberOfCols>
  <NumberOfRows>18</NumberOfRows>
  <HasScenarios>false</HasScenarios>
  <MonetaryRoundingLevel>Thousands</MonetaryRoundingLevel>
  <SharesRoundingLevel>Thousands</SharesRoundingLevel>
  <PerShareRoundingLevel>Hundreds</PerShareRoundingLevel>
  <HasPureData>false</HasPureData>
  <SharesShouldBeRounded>true</SharesShouldBeRounded>
</InstanceReport>
