private function _sumStringOneOrder($prevResult, $tmpVal, $gender, array $variants)
    {
        if ($tmpVal == 0) {
            return array($prevResult, $tmpVal);
        }

        $words = array();
        $fiveItems = $variants[2];
        $rest = $tmpVal % 1000;
        if ($rest < 0) {
            throw new \RangeException('Int overflow');
        }

        $tmpVal = intval($tmpVal / 1000);

        //check last digits are 0
        if ($rest == 0) {
            if (!$prevResult) {
                $prevResult = $fiveItems.' ';
            }
            return array($prevResult, $tmpVal);
        }

        //hundreds
        $words[] = self::$_HUNDREDS[intval($rest / 100)];

        //tens
        $rest %= 100;
        $rest1 = intval($rest / 10);
        $words[] = ($rest1 == 1) ? self::$_TENS[$rest] : self::$_TENS[$rest1];

        //ones
        if ($rest1 == 1) {
            $endWord = $fiveItems;
        } else {
            $amount = $rest % 10;
            $words[] = self::$_ONES[$amount][$gender - 1];
            $endWord = $this->choosePlural($amount, $variants);
        }
        $words[] = $endWord;

        $words[] = $prevResult;
        $words = array_filter($words, 'strlen');

        $result = trim(implode(' ', $words));
        return array($result, $tmpVal);
    }