<SEC-DOCUMENT>0001437749-24-028925.txt : 20240911
<SEC-HEADER>0001437749-24-028925.hdr.sgml : 20240911
<ACCEPTANCE-DATETIME>20240911091947
ACCESSION NUMBER:		0001437749-24-028925
CONFORMED SUBMISSION TYPE:	10-Q
PUBLIC DOCUMENT COUNT:		74
CONFORMED PERIOD OF REPORT:	20240731
FILED AS OF DATE:		20240911
DATE AS OF CHANGE:		20240911

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			Perma-Pipe International Holdings, Inc.
		CENTRAL INDEX KEY:			0000914122
		STANDARD INDUSTRIAL CLASSIFICATION:	INDUSTRIAL & COMMERCIAL FANS & BLOWERS & AIR PURIFYING EQUIP [3564]
		ORGANIZATION NAME:           	06 Technology
		IRS NUMBER:				363922969
		STATE OF INCORPORATION:			DE
		FISCAL YEAR END:			0131

	FILING VALUES:
		FORM TYPE:		10-Q
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-32530
		FILM NUMBER:		241291545

	BUSINESS ADDRESS:	
		STREET 1:		24900 PITKIN ROAD
		STREET 2:		SUITE 309
		CITY:			SPRING
		STATE:			TX
		ZIP:			77386
		BUSINESS PHONE:		2815986222

	MAIL ADDRESS:	
		STREET 1:		24900 PITKIN ROAD
		STREET 2:		SUITE 309
		CITY:			SPRING
		STATE:			TX
		ZIP:			77386

	FORMER COMPANY:	
		FORMER CONFORMED NAME:	MFRI INC
		DATE OF NAME CHANGE:	19970402

	FORMER COMPANY:	
		FORMER CONFORMED NAME:	MIDWESCO FILTER RESOURCES INC
		DATE OF NAME CHANGE:	19970402
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-Q
<SEQUENCE>1
<FILENAME>ppih20240731_10q.htm
<DESCRIPTION>FORM 10-Q
<TEXT>
<XBRL>
<?xml version='1.0' encoding='ASCII'?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:naics="http://xbrl.sec.gov/naics/2024" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2020-02-12" xmlns:us-types="http://fasb.org/us-types/2023" xmlns:srt-types="http://fasb.org/srt-types/2023" xmlns:utreg="http://www.xbrl.org/2009/utr" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:us-roles="http://fasb.org/us-roles/2017-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2024" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thunderdome="http://www.RDGFilings.com" xmlns:utr="http://www.xbrl.org/2009/utr" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:dei="http://xbrl.sec.gov/dei/2024" xmlns:enum2="http://xbrl.org/2020/extensible-enumerations-2.0" xmlns:ppih="http://investors.permapipe.com/20240731" xmlns:currency="http://xbrl.sec.gov/currency/2024" xmlns:sic="http://xbrl.sec.gov/sic/2024" xmlns:exch="http://xbrl.sec.gov/exch/2024" xmlns:rr="http://xbrl.sec.gov/rr/2023" xmlns:country="http://xbrl.sec.gov/country/2024" xmlns:ecd="http://xbrl.sec.gov/ecd/2024" xmlns:us-gaap="http://fasb.org/us-gaap/2024" xmlns:srt="http://fasb.org/srt/2024" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21">
 <head>
  <title>ppih20240731_10q.htm</title>
  <!-- Generated by ThunderDome Portal - 9/10/2024 8:33:16 PM -->
  <meta http-equiv="Content-Type" content="text/html"/></head>
 <body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10px; margin-left: 10px; cursor: auto;"><div style="display: none;"><ix:header><ix:hidden>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:EntityCentralIndexKey" id="thunderdome-EntityCentralIndexKey">0000914122</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:EntityRegistrantName" id="thunderdome-EntityRegistrantName">Perma-Pipe International Holdings, Inc.</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:AmendmentFlag" format="ixt:fixed-false" id="ixv-7758">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:CurrentFiscalYearEndDate" id="ixv-7759">--01-31</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:DocumentFiscalPeriodFocus" id="ixv-7760">Q2</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="dei:DocumentFiscalYearFocus" id="ixv-7761">2024</ix:nonNumeric>
<ix:nonFraction id="c116840644" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">713</ix:nonFraction>
<ix:nonFraction id="c116840645" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">699</ix:nonFraction>
<ix:nonFraction id="c116840715" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CommitmentsAndContingencies" scale="3" xsi:nil="true"/>
<ix:nonFraction id="c116840716" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CommitmentsAndContingencies" scale="3" xsi:nil="true"/>
<ix:nonFraction id="c116840720" contextRef="i_2024-07-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c116840721" contextRef="i_2024-01-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.01</ix:nonFraction>
<ix:nonFraction id="c116840722" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="3" format="ixt:num-dot-decimal" decimals="-7">50,000</ix:nonFraction>
<ix:nonFraction id="c116840723" contextRef="i_2024-01-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="3" format="ixt:num-dot-decimal" decimals="-7">50,000</ix:nonFraction>
<ix:nonFraction id="c116840724" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,978</ix:nonFraction>
<ix:nonFraction id="c116840726" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,978</ix:nonFraction>
<ix:nonFraction id="c116840725" contextRef="i_2024-01-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction>
<ix:nonFraction id="c116840727" contextRef="i_2024-01-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction>
<ix:nonFraction id="c116840734" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:TreasuryStockCommonShares" scale="3" format="ixt:num-dot-decimal" decimals="-3">112</ix:nonFraction>
<ix:nonFraction id="c116840735" contextRef="i_2024-01-31" unitRef="Share" name="us-gaap:TreasuryStockCommonShares" scale="3" format="ixt:num-dot-decimal" decimals="-3">112</ix:nonFraction>
<ix:nonFraction id="c116841022" contextRef="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="6" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c116841028" contextRef="d_2023-05-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt:num-dot-decimal" decimals="INF">1</ix:nonFraction>
<ix:nonFraction id="c116841033" contextRef="d_2023-02-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c116841038" contextRef="d_2023-02-01_2024-01-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt:num-dot-decimal" decimals="INF">1</ix:nonFraction>
<ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" id="c116841079" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonFraction id="c116841227" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c116841238" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c116841239" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2018-09-20_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" name="us-gaap:DebtInstrumentTerm" id="c116841349" format="ixt-sec:duryear">3</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" name="us-gaap:DebtInstrumentTerm" id="c116841351" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" name="us-gaap:LesseeFinanceLeaseTermOfContract1" id="c116841381" format="ixt-sec:duryear">15</ix:nonNumeric>
<ix:nonFraction id="c116841384" contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="Pure" name="ppih:LesseeFinanceLeaseNumberOfOptionsToExtend" scale="0" format="ixt:num-dot-decimal" decimals="INF">4</ix:nonFraction>
<ix:nonNumeric contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" name="us-gaap:LesseeFinanceLeaseRenewalTerm1" id="c116841385" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonFraction id="c116841426" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>
<ix:nonNumeric contextRef="d_2016-07-28_2016-07-28_DebtInstrumentAxis-CanadianMortgageNoteMember" name="us-gaap:DebtInstrumentMaturityDate" id="c116841456" format="ixt:date-monthname-day-year-en">December&#160;23, 2042</ix:nonNumeric>
<ix:nonFraction id="c116841462" contextRef="i_2024-01-31_DebtInstrumentAxis-CanadianMortgageNoteMember" unitRef="USD" name="us-gaap:DeferredFinanceCostsNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>
<ix:nonNumeric contextRef="i_2024-07-31_RangeAxis-MinimumMember" name="us-gaap:LesseeFinanceLeaseTermOfContract1" id="c116841494" format="ixt-sec:duryear">1</ix:nonNumeric>
<ix:nonNumeric contextRef="i_2024-07-31_RangeAxis-MaximumMember" name="us-gaap:LesseeFinanceLeaseTermOfContract1" id="c116841495" format="ixt-sec:duryear">30</ix:nonNumeric>
<ix:nonFraction id="c116841510" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseExpense" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.6</ix:nonFraction>
<ix:nonFraction id="c116841674" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2024-05-01_2024-07-31" name="ecd:Rule10b51ArrAdoptedFlag" id="c116841723" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-05-01_2024-07-31" name="ecd:NonRule10b51ArrAdoptedFlag" id="c116841724" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-05-01_2024-07-31" name="ecd:Rule10b51ArrTrmntdFlag" id="c116841725" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2024-05-01_2024-07-31" name="ecd:NonRule10b51ArrTrmntdFlag" id="c116841726" format="ixt:fixed-false">false</ix:nonNumeric>
<ix:footnote xml:lang="en-us" id="fee3b38f4-eb44-40dd-9944-816fbb79d197">Includes variable lease costs, which are not material.</ix:footnote></ix:hidden>
<ix:references>
<link:schemaRef xlink:href="ppih-20240731.xsd" xlink:type="simple"/></ix:references>
<ix:resources>
<xbrli:context id="d_2024-02-01_2024-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Share"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2024-09-11"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2024-09-11</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="NonApplicable"><xbrli:measure>thunderdome:item</xbrli:measure></xbrli:unit>
<xbrli:unit id="USD"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2024-05-01_2024-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="USDPerShare"><xbrli:divide><xbrli:unitNumerator><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unitNumerator><xbrli:unitDenominator><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unitDenominator></xbrli:divide></xbrli:unit>
<xbrli:context id="i_2024-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-04-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-04-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2024-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-04-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-04-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-04-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-04-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-07-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2023-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis">us-gaap:UnbilledRevenuesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis">us-gaap:UnbilledRevenuesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">ppih:FinanceLeaseObligationsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">ppih:FinanceLeaseObligationsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Pure"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2015-12-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2015-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2016-01-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2016-01-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_BalanceSheetLocationAxis-OtherNoncurrentAssetsMember_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherNoncurrentAssetsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2024-01-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2024-01-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Year"><xbrli:measure>utr:Y</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">ppih:PermaPipeCanadaLtdMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2016-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2024-01-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2018-09-20_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-09-20</xbrli:startDate><xbrli:endDate>2018-09-20</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-09-20</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-09-17</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:StatementScenarioAxis">ppih:AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:StatementScenarioAxis">ppih:AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:NorthAmericanLoanPartiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-09-17</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:NorthAmericanLoanPartiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-09-17</xbrli:startDate><xbrli:endDate>2021-09-17</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-04-14</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-14_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-14</xbrli:startDate><xbrli:endDate>2021-04-14</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-14_2021-04-14_DebtInstrumentAxis-MortgageNoteSecuredByTennesseeManufacturingFacilityMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:MortgageNoteSecuredByTennesseeManufacturingFacilityMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-14</xbrli:startDate><xbrli:endDate>2021-04-14</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-04-14</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-14_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-14</xbrli:startDate><xbrli:endDate>2021-04-14</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="AED"><xbrli:measure>iso4217:AED</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="EGP"><xbrli:measure>iso4217:EGP</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2021-06-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-08-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-08-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-12-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-11-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-11-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-03-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-EIBORMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:EIBORMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-EIBORMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:EIBORMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:CentralBankOfEqyptCbeRateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:CentralBankOfEqyptCbeRateMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_VariableRateAxis-SIBORMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SIBORMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-WeightedAverageMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-06-30_DebtInstrumentAxis-PromissoryNoteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:PromissoryNoteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2016-07-28_2016-07-28_DebtInstrumentAxis-CanadianMortgageNoteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2016-07-28</xbrli:startDate><xbrli:endDate>2016-07-28</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="CAD"><xbrli:measure>iso4217:CAD</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_DebtInstrumentAxis-CanadianMortgageNoteMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2024-01-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2024-01-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:FinanceLeasesAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:FinanceLeasesAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-10-04"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-10-04</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2022-12-07"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-12-07</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-06-01_OwnershipAxis-JointVentureMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:OwnershipAxis">ppih:JointVentureMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-06-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:OwnershipAxis">ppih:JointVentureMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-06-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-06-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2023-06-01_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2023-06-01</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-05-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-05-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-05-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-05-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2024-02-01</xbrli:startDate><xbrli:endDate>2024-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2023-02-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2023-02-01</xbrli:startDate><xbrli:endDate>2023-07-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-07-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2024-01-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000914122</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2024-01-31</xbrli:instant></xbrli:period></xbrli:context>
<ix:relationship linkRole="http://www.xbrl.org/2003/role/link" arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" toRefs="fee3b38f4-eb44-40dd-9944-816fbb79d197" fromRefs="c116841582 c116841583 c116841584 c116841585"/></ix:resources>
</ix:header></div>
  <div>
    &#160;
  </div>
  <div><p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;"><b>UNITED STATES</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;"><b>SECURITIES AND EXCHANGE COMMISSION</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;"><b>WASHINGTON, D.C. 20549</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;"><b>FORM <ix:nonNumeric name="dei:DocumentType" contextRef="d_2024-02-01_2024-07-31" id="ixv-9218">10-Q</ix:nonNumeric></b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 12pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;"><td style="width: 3%; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentQuarterlyReport" format="ixt-sec:boolballotbox" contextRef="d_2024-02-01_2024-07-31" id="ixv-9219">&#9746;</ix:nonNumeric></p> </td><td style="width: 97%; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><b>QUARTERLY REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">For the quarterly period ended <ix:nonNumeric name="dei:DocumentPeriodEndDate" format="ixt:date-monthname-day-year-en" contextRef="d_2024-02-01_2024-07-31" id="ixv-9220">July 31, 2024</ix:nonNumeric></p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 3%; font-family: Times New Roman; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" contextRef="d_2024-02-01_2024-07-31" id="ixv-9221">&#9744;</ix:nonNumeric></td><td style="width: 97%; font-family: Times New Roman; font-size: 10pt;"><b>TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></td></tr>
</tbody></table>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">For the transition period from ________ to ________</p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>Commission File No. <ix:nonNumeric name="dei:EntityFileNumber" contextRef="d_2024-02-01_2024-07-31" id="ixv-9222">001-32530</ix:nonNumeric></b></p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>Perma-Pipe International Holdings, Inc.</b></p>
<p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">(Exact name of registrant as specified in its charter)</p>
<div style="text-align: center;">
 <div>
  <img alt="logo.jpg" src="logo.jpg"/>
 </div>
</div>
<div style="text-align: center;">
 &#160;
</div>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" contextRef="d_2024-02-01_2024-07-31" id="ixv-9223">Delaware</ix:nonNumeric></b></p> </td><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="d_2024-02-01_2024-07-31" id="ixv-9224">36-3922969</ix:nonNumeric></b></p> </td></tr>
<tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>(State or other jurisdiction of incorporation or organization)</b></p> </td><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>(I.R.S. Employer Identification No.)</b></p> </td></tr>
<tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td></tr>
<tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="d_2024-02-01_2024-07-31" id="ixv-9225">24900 Pitkin Road, Suite 309</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="d_2024-02-01_2024-07-31" id="ixv-9226">Spring</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" contextRef="d_2024-02-01_2024-07-31" id="ixv-9227">Texas</ix:nonNumeric></b></p> </td><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="d_2024-02-01_2024-07-31" id="ixv-9228">77386</ix:nonNumeric></b></p> </td></tr>
<tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>(Address of principal executive offices)</b></p> </td><td style="width: 50%; vertical-align: bottom; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b>(Zip Code)</b></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; text-align: center; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: center; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;"><b>(<ix:nonNumeric name="dei:CityAreaCode" contextRef="d_2024-02-01_2024-07-31" id="ixv-9229">847</ix:nonNumeric>) <ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="d_2024-02-01_2024-07-31" id="ixv-9230">966-1000</ix:nonNumeric></b></p>
<p style="margin: 0pt; text-align: center; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">(Registrant's telephone number, including area code)</p>
<p style="margin: 0pt; text-align: center; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">Securities registered pursuant to Section 12(b) of the Act:</p>
<p style="margin: 0pt; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;"><span style="text-decoration: underline; ">Title of each class</span></td><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;"><span style="text-decoration: underline; ">Trading Symbol(s)</span></td><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;"><span style="text-decoration: underline; ">Name of each exchange on which registered</span></td></tr>
<tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;"><ix:nonNumeric name="dei:Security12bTitle" contextRef="d_2024-02-01_2024-07-31" id="ixv-9231">Common Stock, $.01 par value per share</ix:nonNumeric></td><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;"><ix:nonNumeric name="dei:TradingSymbol" contextRef="d_2024-02-01_2024-07-31" id="ixv-9232">PPIH</ix:nonNumeric></td><td style="width: 30%; text-align: center; font-family: Times New Roman; font-size: 10pt;">The <ix:nonNumeric name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" contextRef="d_2024-02-01_2024-07-31" id="ixv-9233">Nasdaq</ix:nonNumeric> Stock Market LLC</td></tr>
</tbody></table>
<p style="margin: 0pt; text-indent: 0pt; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">Indicate by check mark whether the registrant (1) has filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that the registrant was required to file such reports), and (2) has been subject to such filing requirements for the past 90 days.</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><ix:nonNumeric name="dei:EntityCurrentReportingStatus" contextRef="d_2024-02-01_2024-07-31" id="ixv-9234">Yes</ix:nonNumeric> &#9746;&#160;&#160;&#160;&#160;No &#9744;</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">Indicate by check mark whether the registrant has submitted electronically&#160;every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T (&#167;232.405 of this chapter)&#160;during the preceding 12 months (or for such shorter period that the registrant was required to submit&#160;such files). <ix:nonNumeric name="dei:EntityInteractiveDataCurrent" contextRef="d_2024-02-01_2024-07-31" id="ixv-9235">Yes</ix:nonNumeric> &#9746;&#160;&#160;&#160;&#160;No &#9744;</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of "large accelerated filer", "accelerated filer", "smaller reporting company" and "emerging growth company" in Rule 12b-2 of the Exchange Act.&#160; Large accelerated filer &#9744;&#160; &#160;Accelerated filer &#9744;&#160; &#160;<ix:nonNumeric name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" contextRef="d_2024-02-01_2024-07-31" id="ixv-9236">Non-accelerated filer</ix:nonNumeric> &#9746;&#160; &#160;Smaller reporting company <ix:nonNumeric name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" contextRef="d_2024-02-01_2024-07-31" id="ixv-9237">&#9746;</ix:nonNumeric>&#160; &#160;Emerging growth company <ix:nonNumeric name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" contextRef="d_2024-02-01_2024-07-31" id="ixv-9238">&#9744;</ix:nonNumeric></p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">If an emerging growth company, indicate by check mark if the registrant has elected not to use the extended transition period for complying with any new or revised financial accounting standards provided pursuant to Section 13(a) of the Exchange Act. &#9744;</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">Indicate by check mark whether the registrant is a shell company (as defined in Rule 12b-2 of the Exchange Act). Yes <ix:nonNumeric name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" contextRef="d_2024-02-01_2024-07-31" id="ixv-9239">&#9744;</ix:nonNumeric>&#160; No &#9746;</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">On<span style="background-color:#ffffff;"> September 11&#160;2024, </span>there were <ix:nonFraction name="dei:EntityCommonStockSharesOutstanding" scale="0" unitRef="Share" decimals="INF" format="ixt:num-dot-decimal" contextRef="i_2024-09-11" id="ixv-9240">7,977,853</ix:nonFraction>&#160;shares of the registrant's common stock outstanding.</p>
<p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
<div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
 <div class="PGFTR" style="text-align: center; width: 100%">
  <div class="hf-row">
   <div class="hf-cell PGNUM">
    &#160;
   </div>
  </div>
 </div>
 <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
 <div class="PGHDR" style="text-align: left; width: 100%">
  <div class="hf-row">
   <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
    <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
   </div>
  </div>
 </div>
</div>
<p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p></div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
    &#160;
  </div>
  <div>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Perma-Pipe International Holdings, Inc.</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 6pt;">&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>FORM 10-Q</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 6pt;">&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>For the fiscal quarter ended July 31, 2024</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="toc" href="#"></a>TABLE OF CONTENTS</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    <tbody>
     <tr>
      <td style="width: 5%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Item</b></p> </td>
      <td style="width: 90%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Page</b></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: none;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: none;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: none;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Part I</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#parti" style="-sec-extract: exhibit;">Financial Information</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#item1" style="-sec-extract: exhibit;">Financial Statements</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#item1" style="-sec-extract: exhibit;">Consolidated Statements of Operations (Unaudited) for the Three and Six Months Ended July 31, 2024 and 2023</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#parti">2</a></p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#comploss" style="-sec-extract: exhibit;">Consolidated Statements of Comprehensive Income (Loss) (Unaudited) for the Three and Six Months Ended July 31, 2024 and 2023</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#comploss">3</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#balance" style="-sec-extract: exhibit;">Consolidated Balance Sheets as of July 31, 2024 (Unaudited) and January 31, 2024</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#balance">4</a></p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#soe" style="-sec-extract: exhibit;">Consolidated Statements of Stockholders' Equity (Unaudited) for the Three and Six Months Ended July 31, 2024 and&#160;2023</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#soe">5</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#cashflows" style="-sec-extract: exhibit;">Consolidated Statements of Cash Flows (Unaudited) for the Six Months Ended July 31, 2024 and 2023</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#cashflows">6</a></p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#notes" style="-sec-extract: exhibit;">Notes to Consolidated Financial Statements&#160;(Unaudited)</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#notes">7</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">2.</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#mnda" style="-sec-extract: exhibit;">Management's Discussion and Analysis of Financial Condition and Results of Operations</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#mnda">20</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#item4" style="-sec-extract: exhibit;">Controls and Procedures</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#item4">27</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Part II</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#partii" style="-sec-extract: exhibit;">Other Information</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;">&#160;</td>
      <td style="width: 90%; vertical-align: bottom;">&#160;</td>
      <td style="width: 5%; vertical-align: bottom;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">6.</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#item6" style="-sec-extract: exhibit;">Exhibits</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#item6">28</a></p> </td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255);">
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 90%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255);">
      <td colspan="2" style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#signatures" style="-sec-extract: exhibit;">Signatures</a></p> </td>
      <td style="width: 5%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#signatures">29</a></p> </td>
     </tr>

    </tbody>
   </table>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM">
        &#160;
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  </div>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="parti" href="#"></a>PART I FINANCIAL INFORMATION</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="item1" href="#"></a>Item 1. </b></p> </td>
     <td style="vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Financial Statements</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>CONSOLIDATED STATEMENTS OF OPERATIONS</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><i>(In thousands, except per share data)</i></b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net sales</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840530" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">37,513</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840531" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,141</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840532" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,834</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840533" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">64,798</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Cost of sales</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840534" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:CostOfRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">24,039</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840535" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:CostOfRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">25,677</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840536" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:CostOfRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">47,843</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840537" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:CostOfRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">48,559</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Gross profit</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840538" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840539" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,464</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840540" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">23,991</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840541" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,239</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Operating expenses</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">General and administrative expenses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840543" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,979</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840544" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,283</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840545" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,128</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840546" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,742</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Selling expenses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840547" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:SellingExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,353</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840548" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:SellingExpense" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,490</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840549" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:SellingExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,588</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840550" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:SellingExpense" scale="3" format="ixt:num-dot-decimal" decimals="-4">2,730</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total operating expenses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840551" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,332</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840552" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,773</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840553" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">14,716</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840554" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,472</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Income from operations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840555" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,142</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840556" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,691</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840557" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,275</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840558" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,767</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Interest expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840559" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:InterestIncomeExpenseNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">514</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840560" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:InterestIncomeExpenseNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">636</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840561" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:InterestIncomeExpenseNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,021</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840562" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:InterestIncomeExpenseNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,148</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Other (expense) income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840563" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">38</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840564" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840565" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">105</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840566" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">154</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Income before income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840567" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-4">5,590</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840568" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,136</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840569" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,149</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840570" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,773</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Income tax expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840571" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,306</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840572" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">966</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840573" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,076</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840574" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,725</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840575" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,284</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840576" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,170</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840577" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,073</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840578" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">48</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Less: Net income attributable to non-controlling interest</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840579" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">995</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840580" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840581" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,341</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840582" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss) attributable to common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840583" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,289</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840584" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,022</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840585" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,732</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840586" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-5" sign="-">100</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Weighted average common shares outstanding</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840588" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,954</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840589" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,029</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840590" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-4">7,930</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840591" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840592" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,125</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840593" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,139</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840594" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,987</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840595" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Earnings (loss) per share attributable to common stock</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840597" contextRef="d_2024-05-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.41</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840598" contextRef="d_2023-05-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.13</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840599" contextRef="d_2024-02-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.60</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840600" contextRef="d_2023-02-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF" sign="-">0.01</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840601" contextRef="d_2024-05-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.40</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840602" contextRef="d_2023-05-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.13</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840603" contextRef="d_2024-02-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.59</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840604" contextRef="d_2023-02-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF" sign="-">0.01</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">See accompanying notes to consolidated financial statements.</p>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       2
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="comploss" href="#"></a>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (LOSS)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><i>(In thousands)</i></b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840613" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,284</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840614" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,170</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840615" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,073</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840616" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">48</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Other comprehensive income (loss)</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Foreign currency translation adjustments, net of tax</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840618" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">192</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840619" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">339</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840620" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,607</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840621" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">98</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Comprehensive income (loss)</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840622" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,092</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840623" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,509</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840624" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,466</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840625" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">50</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Less: Comprehensive income attributable to non-controlling interests</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840626" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">995</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840627" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840628" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,341</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840629" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3">148</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total comprehensive income (loss) attributable to common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840630" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,097</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840631" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,361</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840632" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,125</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840633" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">198</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">See accompanying notes to consolidated financial statements.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       3
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="balance" href="#"></a>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>CONSOLIDATED BALANCE SHEETS</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><i>(In thousands, except per share data)</i></b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="margin: 0px; padding-top: 0px; padding-right: 0px; padding-left: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 70%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><b>ASSETS</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Current assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840638" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,455</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840639" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,845</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Restricted cash</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840640" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:RestrictedCashCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,426</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840641" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:RestrictedCashCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Trade accounts receivable, less allowance for credit losses of $<span style="-sec-ix-hidden:c116840644">713</span> at July 31, 2024 and $<span style="-sec-ix-hidden:c116840645">699</span> at January 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840642" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccountsReceivableNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">39,927</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840643" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccountsReceivableNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">46,646</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Inventories</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840646" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,823</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840647" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,541</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Prepaid expenses and other current assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840648" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,197</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840649" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,697</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Unbilled accounts receivable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840650" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:UnbilledReceivablesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">17,850</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840651" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:UnbilledReceivablesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,597</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Costs and estimated earnings in excess of billings on uncompleted contracts</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);"><ix:nonFraction id="c116840652" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,085</ix:nonFraction></span></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);"><ix:nonFraction id="c116840653" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNetCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,097</ix:nonFraction></span></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Total current assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840654" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">100,763</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840655" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">98,818</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Long-term assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="text-indent: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Property, plant and equipment, net of accumulated depreciation</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840657" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">37,518</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840658" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-4">37,620</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Operating lease right-of-use asset</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840659" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,938</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840660" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,467</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Deferred tax assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840661" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,866</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840662" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,919</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Goodwill</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840663" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,156</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840664" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,222</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Other long-term assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840665" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,946</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840666" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,665</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Total long-term assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840667" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">58,424</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840668" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AssetsNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">56,893</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840669" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">159,187</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840670" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:num-dot-decimal" decimals="-3">155,711</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><b>LIABILITIES AND STOCKHOLDERS' EQUITY</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Current liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Trade accounts payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840673" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,411</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840674" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">25,323</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Accrued compensation and payroll taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840675" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,358</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840676" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,214</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Commissions and management incentives payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840677" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccruedSalesCommissionCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">5,210</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840678" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccruedSalesCommissionCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,523</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Revolving line - North America</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840679" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LinesOfCreditCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,699</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840680" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:LinesOfCreditCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,519</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Current maturities of long-term debt</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840681" contextRef="i_2024-07-31" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,522</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840682" contextRef="i_2024-01-31" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,071</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Customers' deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840683" contextRef="i_2024-07-31" unitRef="USD" name="ppih:CustomerDepositsCurrent1" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,949</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840684" contextRef="i_2024-01-31" unitRef="USD" name="ppih:CustomerDepositsCurrent1" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,264</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Operating lease liability short-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840685" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">965</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840686" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">914</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Other accrued liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840687" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,178</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840688" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,039</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Billings in excess of costs and estimated earnings on uncompleted contracts</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840689" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">704</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840690" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">495</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Income taxes payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);"><ix:nonFraction id="c116840691" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,475</ix:nonFraction></span></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);"><ix:nonFraction id="c116840692" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">2,380</ix:nonFraction></span></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><span style="color: rgb(0, 0, 0);">&#160;</span></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Total current liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840693" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">56,471</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840694" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">57,742</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Long-term liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Long-term debt, less current maturities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840696" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LongTermDebtNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,912</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840697" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:LongTermDebtNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,035</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-indent: 9pt;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Long-term finance obligation</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840698" contextRef="i_2024-07-31" unitRef="USD" name="ppih:LongtermDebtAndLeaseObligationNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,974</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840699" contextRef="i_2024-01-31" unitRef="USD" name="ppih:LongtermDebtAndLeaseObligationNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,229</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Deferred compensation liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840700" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,180</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840701" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,212</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Deferred tax liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840702" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,165</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840703" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,217</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 0pt 0pt 9pt;">Operating lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840704" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,689</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840705" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">6,270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Loan payable to GIG</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840706" contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:LongTermLoansPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,753</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840707" contextRef="i_2024-01-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:LongTermLoansPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,753</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Other long-term liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840708" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,403</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840709" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,275</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Total long-term liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840710" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">26,076</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840711" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:LiabilitiesNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">25,991</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0pt;">Non-controlling interest</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"><ix:nonFraction id="c116840712" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,057</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"><ix:nonFraction id="c116840713" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,266</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom" class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Commitments and contingencies</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;<span style="-sec-ix-hidden:c116840715">&#160;</span></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;<span style="-sec-ix-hidden:c116840716">&#160;</span></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;">Stockholders' equity</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 15px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt 0pt 0pt 27pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: -18pt;">Common stock, $<span style="-sec-ix-hidden:c116840720"><span style="-sec-ix-hidden:c116840721">.01</span></span> par value, authorized <span style="-sec-ix-hidden:c116840722"><span style="-sec-ix-hidden:c116840723">50,000</span></span> shares; <span style="-sec-ix-hidden:c116840724"><span style="-sec-ix-hidden:c116840726">7,978</span></span> issued and outstanding at July 31, 2024 and <span style="-sec-ix-hidden:c116840725"><span style="-sec-ix-hidden:c116840727">8,017</span></span> at January 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840718" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">81</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840719" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-indent: 9pt;">Additional paid-in capital</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840728" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapital" scale="3" format="ixt:num-dot-decimal" decimals="-3">59,808</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840729" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapital" scale="3" format="ixt:num-dot-decimal" decimals="-3">60,063</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Treasury stock, <span style="-sec-ix-hidden:c116840734"><span style="-sec-ix-hidden:c116840735">112</span></span> shares at July 31, 2024 and January 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840731" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:TreasuryStockCommonValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">968</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840732" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:TreasuryStockCommonValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">968</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Retained earnings</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840737" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:num-dot-decimal" decimals="-4">16,820</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840738" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,088</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840740" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">7,158</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840741" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,551</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Total stockholders' equity</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840743" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">68,583</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840744" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">65,712</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total liabilities and stockholders' equity</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840746" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">159,187</ix:nonFraction></td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840747" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">155,711</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">See accompanying notes to consolidated financial statements.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       4
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="soe" href="#"></a>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>CONSOLIDATED STATEMENTS OF STOCKHOLDERS' EQUITY </b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><i>(In thousands, except share data)</i></b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px; margin-left: 0pt; margin-right: 0pt;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Common Stock</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Additional Paid-in Capital</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Retained Earnings</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Treasury Stock</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Accumulated Other Comprehensive Loss</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Total Stockholders' Equity</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at January 31, 2024</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840756" contextRef="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840757" contextRef="i_2024-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">60,063</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840758" contextRef="i_2024-01-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,088</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840759" contextRef="i_2024-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">968</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840760" contextRef="i_2024-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">5,551</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840761" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">65,712</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840762" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840763" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840764" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,443</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840765" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840766" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840767" contextRef="d_2024-02-01_2024-04-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,443</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840768" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840769" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">228</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840770" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840771" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840772" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840773" contextRef="d_2024-02-01_2024-04-30" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">228</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Amount attributable to non-controlling interest</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840774" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840775" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">421</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840776" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840777" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840778" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840779" contextRef="d_2024-02-01_2024-04-30" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">421</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840780" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840781" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840782" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840783" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840784" contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,415</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840785" contextRef="d_2024-02-01_2024-04-30" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,415</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at April 30, 2024</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840786" contextRef="i_2024-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840787" contextRef="i_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">59,870</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840788" contextRef="i_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,531</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840789" contextRef="i_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">968</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840790" contextRef="i_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,966</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840791" contextRef="i_2024-04-30" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">65,547</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840792" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840793" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840794" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,289</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840795" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840796" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840797" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,289</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Common stock issued under stock plans, net of shares used for tax withholding</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840798" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:num-dot-decimal" decimals="-3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840799" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">210</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840800" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840801" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840802" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840803" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">209</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840804" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840805" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">177</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840806" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840807" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840808" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840809" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">177</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Amount attributable to non-controlling interest</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840810" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840811" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">29</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840812" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840813" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840814" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840815" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">29</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840816" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840817" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840818" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840819" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840820" contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">192</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840821" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">192</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at July 31, 2024</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840822" contextRef="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840823" contextRef="i_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">59,808</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840824" contextRef="i_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">16,820</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840825" contextRef="i_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">968</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840826" contextRef="i_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">7,158</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840827" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">68,583</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px; margin-left: 0pt; margin-right: 0pt;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Common Stock</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Additional Paid-in Capital</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Retained Earnings</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Treasury Stock</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Accumulated Other Comprehensive Loss</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Total Stockholders' Equity</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at January 31, 2023</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840834" contextRef="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840835" contextRef="i_2023-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">62,562</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840836" contextRef="i_2023-01-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,617</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840837" contextRef="i_2023-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">26</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840838" contextRef="i_2023-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,449</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840839" contextRef="i_2023-01-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">57,784</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net loss</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840840" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840841" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840842" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,123</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840843" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840844" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840845" contextRef="d_2023-02-01_2023-04-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">1,123</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; margin: 0pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840846" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840847" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">229</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840848" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840849" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840850" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;"><ix:nonFraction id="c116840851" contextRef="d_2023-02-01_2023-04-30" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">229</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840852" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840853" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840854" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840855" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840856" contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">437</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840857" contextRef="d_2023-02-01_2023-04-30" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">437</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at April 30, 2023</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840858" contextRef="i_2023-04-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-4">80</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840859" contextRef="i_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">62,791</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840860" contextRef="i_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">494</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840861" contextRef="i_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">26</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840862" contextRef="i_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,886</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840863" contextRef="i_2023-04-30" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">56,453</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840864" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840865" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840866" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,022</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840867" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840868" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840869" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,022</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Common stock issued under stock plans, net of shares used for tax withholding</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840870" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840871" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">274</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840872" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840873" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840874" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840875" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">274</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Repurchase of common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840876" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="ppih:TreasuryStockValueAcquired" scale="3" format="ixt:num-dot-decimal" decimals="-3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840877" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:TreasuryStockValueAcquiredCostMethod" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840878" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:TreasuryStockValueAcquiredCostMethod" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840879" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:TreasuryStockValueAcquiredCostMethod" scale="3" format="ixt:num-dot-decimal" decimals="-3">312</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840880" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:TreasuryStockValueAcquiredCostMethod" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840881" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:TreasuryStockValueAcquiredCostMethod" scale="3" format="ixt:num-dot-decimal" decimals="-3">311</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840882" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840883" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">245</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840884" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840885" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840886" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0"><ix:nonFraction id="c116840887" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">245</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840888" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840889" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840890" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840891" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840892" contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">339</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840893" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">339</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Total stockholders' equity at July 31, 2023</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840894" contextRef="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840895" contextRef="i_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">62,762</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840896" contextRef="i_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,516</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840897" contextRef="i_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">338</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c116840898" contextRef="i_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,547</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840899" contextRef="i_2023-07-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:num-dot-decimal" decimals="-3">57,474</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px; margin-left: 0pt; margin-right: 0pt;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; width: 76%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; margin: 0pt;"><b>Shares</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-bottom: 1px; width: 1%;">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; width: 76%; padding: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Balances at beginning of year</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c116840902" contextRef="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">8,016,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c116840903" contextRef="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">8,007,002</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; width: 76%; padding: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Shares issued, net of shares used for tax withholding</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c116840904" contextRef="d_2024-02-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:num-dot-decimal" decimals="INF">73,087</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c116840905" contextRef="d_2023-02-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:num-dot-decimal" decimals="INF">66,726</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px; margin: 0px;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; width: 76%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; font-variant: normal; margin: 0pt;">Prior period adjustments</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840906" contextRef="i_2024-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:fixed-zero" decimals="INF">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840907" contextRef="i_2023-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF" sign="-">56,947</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; width: 76%; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 8pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Balances at period end</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840908" contextRef="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">8,089,868</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840909" contextRef="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:SharesOutstanding" scale="0" format="ixt:num-dot-decimal" decimals="INF">8,016,781</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 8pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">See accompanying notes to consolidated financial statements.</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       5
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="cashflows" href="#"></a>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>CONSOLIDATED STATEMENTS OF CASH FLOWS</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><i>(In thousands)</i></b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
    <tbody>
     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Operating activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840915" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,073</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840916" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProfitLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">48</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Adjustments to reconcile net income to net cash provided by operating activities</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Depreciation and amortization</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840918" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,717</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840919" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,791</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Deferred tax expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840920" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxesAndTaxCredits" scale="3" format="ixt:num-dot-decimal" decimals="-3">203</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840921" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxesAndTaxCredits" scale="3" format="ixt:num-dot-decimal" decimals="-3">191</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840922" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">396</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840923" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:num-dot-decimal" decimals="-3">456</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Provision on uncollectible accounts</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840924" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProvisionForDoubtfulAccounts" scale="3" format="ixt:num-dot-decimal" decimals="-3">43</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840925" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProvisionForDoubtfulAccounts" scale="3" format="ixt:num-dot-decimal" decimals="-3">8</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Gain (loss) from disposal of fixed assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840926" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:GainLossOnDispositionOfAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">29</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840927" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:GainLossOnDispositionOfAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">5</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Changes in operating assets and liabilities</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accounts receivable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840929" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">6,090</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840930" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,865</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Inventories</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840931" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:num-dot-decimal" decimals="-3">809</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840932" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">882</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Costs and estimated earnings in excess of billings on uncompleted contracts</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840933" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">221</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840934" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,495</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accounts payable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840935" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">3,064</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840936" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,044</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Accrued compensation and payroll taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840937" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">48</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840938" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">1,650</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Customers' deposits</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840939" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="ppih:IncreaseDecreaseInCustomerDeposits1" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,810</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840940" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="ppih:IncreaseDecreaseInCustomerDeposits1" scale="3" format="ixt:num-dot-decimal" decimals="-3">534</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Income tax receivable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840941" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">789</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840942" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">766</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Prepaid expenses and other current assets</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840943" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,209</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840944" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">989</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Unbilled accounts receivable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840945" contextRef="d_2024-02-01_2024-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,857</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840946" contextRef="d_2023-02-01_2023-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables" scale="3" format="ixt:num-dot-decimal" decimals="-3">8</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other assets and liabilities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840947" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,974</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840948" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">389</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 18pt;">Net cash provided by operating activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840949" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,832</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840950" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,533</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Investing activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Capital expenditures</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840952" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-4">3,180</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840953" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,797</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Proceeds from insurance recovery for property and equipment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840954" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProceedsFromInsuranceSettlementInvestingActivities" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840955" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProceedsFromInsuranceSettlementInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">5</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 0pt;">Net cash used in investing activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840956" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-4" sign="-">3,180</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840957" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">6,792</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Financing activities</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Proceeds from revolving credit lines</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840959" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ProceedsFromLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-4">39,540</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840960" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ProceedsFromLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-4">96,920</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Payments of debt on revolving credit lines</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840961" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RepaymentsOfLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">36,887</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840962" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RepaymentsOfLinesOfCredit" scale="3" format="ixt:num-dot-decimal" decimals="-3">92,091</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Payments of principal on finance obligation</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840963" contextRef="d_2024-02-01_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations" scale="3" format="ixt:num-dot-decimal" decimals="-3">91</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840964" contextRef="d_2023-02-01_2023-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations" scale="3" format="ixt:num-dot-decimal" decimals="-3">56</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Payments of other debt</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840965" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RepaymentsOfOtherDebt" scale="3" format="ixt:num-dot-decimal" decimals="-3">117</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840966" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RepaymentsOfOtherDebt" scale="3" format="ixt:num-dot-decimal" decimals="-3">124</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Increase (decrease) in drafts payable</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840967" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">8</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840968" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">178</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Payments on finance lease obligations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840969" contextRef="d_2024-02-01_2024-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">16</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116840970" contextRef="d_2023-02-01_2023-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">154</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 9pt;">Repurchase of common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840971" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116840972" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:num-dot-decimal" decimals="-3">312</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Stock options exercised and taxes paid related to restricted shares vested</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840973" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">201</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116840974" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">273</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Net cash provided by financing activities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840975" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,236</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840976" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,732</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Effect of exchange rate changes on cash, cash equivalents and restricted cash</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840977" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">753</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840978" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">61</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net increase in cash, cash equivalents and restricted cash</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840979" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,641</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840980" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:num-dot-decimal" decimals="-3">534</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash, cash equivalents and restricted cash - beginning of period</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840981" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-4">7,240</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      <td style="width: 12%; text-align: right; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116840982" contextRef="i_2023-01-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,793</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Cash, cash equivalents and restricted cash - end of period</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840983" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,881</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116840984" contextRef="i_2023-07-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,327</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Supplemental cash flow information</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Cash interest paid</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840986" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-6">1,000</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116840987" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:InterestPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,302</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Cash income taxes paid</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840988" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:IncomeTaxesPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,436</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840989" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:IncomeTaxesPaidNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,234</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Fixed assets acquired under finance leases - non-cash</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840990" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840991" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">139</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; text-indent: 9pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Fixed assets acquired from non affiliates - non-cash</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840992" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116840993" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,357</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">See accompanying notes to consolidated financial statements.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       6
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="notes" href="#"></a>PERMA-PIPE INTERNATIONAL HOLDINGS, INC.&#160;</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">July 31, 2024</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands, except per share data, or unless&#160;otherwise specified)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" id="c2734961" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">1</em> - Basis of presentation</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The interim consolidated financial statements of Perma-Pipe International Holdings, Inc., and subsidiaries (collectively, "PPIH", "Company", or "Registrant") are unaudited, but include all adjustments that the Company's management considers necessary to fairly state the financial position and results of operations for the periods presented. These adjustments consist of normal recurring adjustments. Certain information and footnote disclosures have been omitted pursuant to Securities and Exchange Commission ("SEC") rules and regulations. The consolidated balance sheet as of&#160;<em style="font: inherit;"> January 31, 2024</em> is derived from the audited consolidated balance sheet as of that date. The results of operations for any interim period are <em style="font: inherit;">not</em> necessarily indicative of future or annual results. Interim financial statements should be read in conjunction with the financial statements and the notes thereto included in the Company's latest Annual Report on Form <em style="font: inherit;">10</em>-K. The Company's fiscal year ends on <em style="font: inherit;"> January 31. </em>Years and balances described as&#160;<em style="font: inherit;">2024</em> and&#160;<em style="font: inherit;">2023</em> are for the fiscal year ending <em style="font: inherit;"> January 31,&#160;</em><em style="font: inherit;">2025</em>&#160;and for the fiscal year ended&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b></b></p><ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="c116842838" escape="true"><p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Significant New Accounting Policies</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Refer to the Company's Annual Report on Form <em style="font: inherit;">10</em>-K for the year ended <em style="font: inherit;"> January 31, 2024</em>&#160;as filed with the SEC on <em style="font: inherit;"> April 26, 2024&#160;</em>for discussion of the Company's significant accounting policies.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>, the Company did <em style="font: inherit;">not</em> adopt or make changes to any new or existing accounting policies.</p></ix:nonNumeric><p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:SegmentReportingDisclosureTextBlock" id="c2734962" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">2</em> - Business segment reporting</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company is engaged in the manufacture and sale of products in <ix:nonFraction id="c116841005" contextRef="d_2024-02-01_2024-07-31" unitRef="Pure" name="us-gaap:NumberOfReportableSegments" scale="0" format="ixt-sec:numwordsen" decimals="INF">one</ix:nonFraction> reportable segment: Piping Systems.&#160;The Company engineers, manufactures and sells pre-insulated specialty piping systems, and leak detection systems. Pre-insulated specialty piping systems include: (i) insulated and jacketed district heating and cooling piping systems for efficient energy distribution from central energy plants to multiple locations, (ii) primary and secondary containment piping systems for transporting chemicals, hazardous fluids and petroleum products,&#160;(iii) the coating and/or insulation of oil and gas gathering and transmission pipelines, and (iv) liquid and powder based anti-corrosion coatings applied both to the external and internal surfaces of steel pipe, including shapes like bends, reducers, tees, and other spools/fittings used in pipelines for the transportation of oil and&#160;gas products and potable water.&#160;The Company's leak detection systems are sold with its piping systems or on a stand-alone basis&#160;to monitor areas where fluid intrusion <em style="font: inherit;"> may </em>contaminate the environment, endanger personal safety, cause a fire hazard, impair essential services or damage equipment or property.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" id="c2734963" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">3</em> - Accounts receivable</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The majority of the Company's accounts receivable are due from geographically dispersed contractors and manufacturing companies. Credit is extended based on an evaluation of a customer's financial condition. In the United States, collateral is <em style="font: inherit;">not</em> generally required. In the United Arab Emirates ("U.A.E."), Saudi Arabia, Egypt and India&#160;letters of credit are usually obtained for significant orders. Accounts receivable are due within various time periods specified in the terms applicable to the specific customer and are stated as&#160;amounts due from customers net of an allowance for claims and credit losses. Standard payment terms are generally net <em style="font: inherit;">30</em> to <em style="font: inherit;">60</em> days. The allowance for credit losses&#160;is&#160;based on specifically identified amounts in customers' accounts, where future collectability is deemed uncertain. Management <em style="font: inherit;"> may </em>exercise its judgment in adjusting the provision as a consequence of known items, such as current economic factors and credit trends. Past due trade accounts receivable balances are written off when the Company's collection efforts have been unsuccessful in collecting the amount due and the amount is deemed uncollectible. The write off is recorded against the allowance for credit losses.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">7</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">In <em style="font: inherit;">2015,</em> the Company completed a project in the Middle East with billings in the aggregate amount of approximately $<ix:nonFraction id="c116841012" contextRef="i_2015-12-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:AccountsReceivableNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">41.9</ix:nonFraction> million. The system has <em style="font: inherit;">not</em> yet been commissioned by the customer. Nevertheless, the Company has received&#160;approximately $<ix:nonFraction id="c116841014" contextRef="d_2016-01-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">40.1</ix:nonFraction>&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024</em>, with a remaining balance due in the amount of $<ix:nonFraction id="c116841015" contextRef="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:AccountsReceivableNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.8</ix:nonFraction> million, all of which pertains to retention clauses within the agreements with&#160;the Company's customer, and which become payable by the customer when this project is fully tested and commissioned. Of this amount, $<ix:nonFraction id="c116841016" contextRef="i_2024-07-31_BalanceSheetLocationAxis-OtherNoncurrentAssetsMember_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:AccountsReceivableNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.3</ix:nonFraction> million&#160;is&#160;classified in other<span style="background-color:#ffffff">&#160;long-term assets on the Company's consolidated balance sheets.</span></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company has been actively involved&#160;in ongoing efforts to collect this&#160;outstanding balance. The Company continues to engage with the customer to ensure full payment of the open balances, and during the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>, and at various times throughout <em style="font: inherit;">2023,</em> the Company received&#160;partial payments to settle $<ix:nonFraction id="c116841019" contextRef="d_2024-02-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">0.3</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841020" contextRef="d_2023-02-01_2023-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="6" format="ixt:num-dot-decimal" decimals="-5" sign="-">0.6</ix:nonFraction>&#160;million, respectively, of the customer's outstanding balances. Further, the Company has been engaged by the customer to perform additional work in <em style="font: inherit;">2024</em> under customary trade terms that supports the continued cooperation between the Company and the customer. As a result, the Company did <span style="-sec-ix-hidden:c116841022">not</span> reserve any allowance against the remaining outstanding balances as of&#160;<em style="font: inherit;"> July 31, 2024</em>. However, if the Company's efforts to collect on this account are <em style="font: inherit;">not</em> successful, the Company <em style="font: inherit;"> may </em>recognize an allowance for all, or substantially all, of any such then uncollected amounts.&#160;</p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><span style="background-color:#ffffff;">For the&#160;<em style="font: inherit;">three</em> months ended <em style="font: inherit;"> July 31, 2024</em>,&#160;<ix:nonFraction id="c116841025" contextRef="d_2024-05-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction>&#160;individual customer accounted for greater than&#160;<em style="font: inherit;">10%</em>&#160;of the Company's consolidated net sales, and during the same period in <em style="font: inherit;">2023,</em> <span style="-sec-ix-hidden:c116841028">one</span> customer accounted for greater than <em style="font: inherit;">10%</em> of the Company's consolidated net sales. For the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>,&#160;<ix:nonFraction id="c116841032" contextRef="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> individual customer accounted for greater than&#160;<em style="font: inherit;">10%</em> of the Company's consolidated net sales.</span></p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><span style="background-color:#ffffff;">As of&#160;</span><em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em><span style="background-color:#ffffff;">,&#160;</span><ix:nonFraction id="c116841035" contextRef="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember" unitRef="Pure" name="ppih:NumberOfMajorCustomers" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction><span style="background-color:#ffffff;">&#160;individual customer&#160;accounted for more than&#160;</span><em style="font: inherit;">10%</em><span style="background-color:#ffffff;">&#160;of the Company's accounts receivable,&#160;and <span style="-sec-ix-hidden:c116841038">one</span> customer accounted for more than&#160;</span><em style="font: inherit;">10%</em><span style="background-color:#ffffff;">&#160;of the Company's accounts receivable, respectively.</span></p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="c2734964" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">4</em> - Revenue recognition&#160;</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company accounts for its revenues under Accounting Standards Codification ("ASC") <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Revenue from contracts with customers</b></i></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company defines a contract as an agreement that has approval and commitment from both parties, defined rights and identifiable payment terms, which ensures the contract has commercial substance and that collectability is reasonably assured.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company&#8217;s standard revenue transactions are classified into <em style="font: inherit;">two</em> main categories:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">1</em>)</p> </td><td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;">Systems and Coating&#160;- which include all bundled products in which Perma-Pipe engineers, and manufactures pre-insulated specialty piping systems mainly relating to the district heating and cooling and oil &amp; gas markets.</td></tr>
</tbody></table>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">2</em>)</p> </td><td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;">Products - which include cables, leak detection products, heat trace products, material/goods <em style="font: inherit;">not</em> bundled with piping or flowline systems, and field services <em style="font: inherit;">not</em> bundled into a project contract.</td></tr>
</tbody></table>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">In accordance with ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">25</em>-<em style="font: inherit;">27</em> through <em style="font: inherit;">29,</em> the Company recognizes specialty piping and coating systems revenue over time as the manufacturing process progresses because <em style="font: inherit;">one</em> of the following conditions exist:</p>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">1</em>)</p> </td><td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">the customer owns the material that is being coated, so the customer controls the asset and thus the work-in-process; or</p> </td></tr>
</tbody></table>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">2</em>)</p> </td><td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">the customer controls the work-in-process due to the custom nature of the pre-insulated, fabricated system being manufactured, which has <em style="font: inherit;">no</em> alternative future use, and there is a right to payment for work performed&#160;to date plus profit margin.</p> </td></tr>
</tbody></table>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt; text-align: justify; text-indent: -9pt; font-family: Times New Roman; font-size: 10pt;">&#160;Products revenue is recognized when goods are shipped or services are performed (ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">25</em>-<em style="font: inherit;">30</em>).</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">A breakdown of the Company's revenues by revenue class for the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>&#160;are as follows:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="c2734965" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Products</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841113" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,795</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841114" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">7</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841115" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,146</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841116" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">7</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841117" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,048</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841118" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">8</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841119" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,988</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841120" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">7</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Specialty Piping Systems and Coating</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under input method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841122" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,613</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841123" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">34</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841124" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">12,801</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841125" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">36</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841126" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">22,752</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841127" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">32</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841128" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">23,139</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841129" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">36</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under output method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841130" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">22,105</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841131" contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">59</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841132" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">20,194</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841133" contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">57</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841134" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">43,034</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841135" contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="1">60</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841136" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">36,671</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841137" contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="2">57</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Total</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841138" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">37,513</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841139" contextRef="d_2024-05-01_2024-07-31" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841140" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">35,141</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841141" contextRef="d_2023-05-01_2023-07-31" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841142" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">71,834</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841143" contextRef="d_2024-02-01_2024-07-31" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841144" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:num-dot-decimal" decimals="-3">64,798</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841145" contextRef="d_2023-02-01_2023-07-31" unitRef="Pure" name="ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" scale="-2" format="ixt:num-dot-decimal" decimals="0">100</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The input method as noted in ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">55</em>-<em style="font: inherit;">20</em> is used by certain operating entities to measure revenue by the costs incurred to date relative to the estimated costs to satisfy the contract over time. Generally, these contracts are considered a single performance obligation satisfied over time and due to the custom nature of the goods and services, the "over time" method is the most faithful depiction of the Company&#8217;s performance as it measures the value of the goods and services transferred to the customer. Costs include all material, labor, and direct costs incurred to satisfy the performance obligations of the contract. Revenue recognition begins when projects costs are incurred. &#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">8</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The output method as noted in ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">55</em>-<em style="font: inherit;">17</em> is used by all&#160;other operating entities to measure revenue by the direct measurement of the outputs produced relative to the remaining goods promised under the contract. Due to the types of end customers, generally these contracts require formal inspection protocols or specific export documentation for units produced, or produced and shipped, therefore, the output method is the most faithful depiction of the Company&#8217;s performance. Depending on the conditions of the contract, revenue <em style="font: inherit;"> may </em>be recognized based on units produced, inspected and held by the Company prior to shipment or on units produced, inspected and shipped.&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Some of the Company&#8217;s operating entities invoice and collect milestones or other contractual obligations prior to the transfer of goods and services, but do&#160;<em style="font: inherit;">not</em> recognize revenue until the performance obligations are satisfied under the methods discussed above.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Contract modifications that occur prior to the start of the manufacturing process will supersede the original contract and revenue is recognized using the modified contract value. Contract modifications that occur during the manufacturing process (changes in scope of work, job performance, material costs, and/or final contract settlements) are recognized in the period in which the revisions are known. Provisions are made for estimated losses on uncompleted contracts in the contract liabilities account in the period in which such losses are determined.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The transaction price&#160;associated with the Company's contracts with customers are generally determined based on the fixed amount of consideration&#160;as specified&#160;in a&#160;contract. This&#160;<em style="font: inherit;"> may </em>also include variable consideration in certain instances where&#160;it is considered probable that a significant reversal of cumulative revenue recognized will <em style="font: inherit;">not</em> occur. As a result, the amount of consideration ultimately received from the customer can fluctuate due to the variability of future events&#160;stated in a&#160;contract. Therefore, the aggregate amount of the transaction price&#160;includes the&#160;fixed consideration contained in a&#160;contract that is generally <em style="font: inherit;">not</em> subject to change and excludes&#160;sales and value added taxes, or amounts collected on behalf of <em style="font: inherit;">third</em> parties, along with any variable consideration. The total transaction price&#160;is then allocated to the performance obligations which is&#160;eventually recognized as revenue based on the project type and the method that is used to measure the transfer&#160;of promised goods and services to&#160;customers.&#160;Additionally, transaction prices relating to cost-plus contracts are determined by applying the applicable profit margin to costs incurred on contracts, whereas transaction prices relating to fixed price contracts are determined on a lump-sum basis. Further, standard payment terms are generally&#160;net <em style="font: inherit;">30</em> to <em style="font: inherit;">60</em> days, which is customer specific.</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Contract assets and liabilities</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Contract assets represent revenue recognized in excess of amounts billed&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Contract liabilities represent billings in excess of costs&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Both customer billings and the satisfaction (or partial satisfaction) of the performance obligation(s) occur throughout the manufacturing process and impact&#160;the period end balances in these accounts.&#160;In addition, contract assets include receivables or amounts that are billable beyond the passage of time.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The following table shows the reconciliation of&#160;costs in excess of billings and billings in excess of costs:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" id="c2734966" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Costs incurred on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841148" contextRef="i_2024-07-31" unitRef="USD" name="ppih:CostsIncurredOnUncompletedContracts" scale="3" format="ixt:num-dot-decimal" decimals="-3">17,686</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841149" contextRef="i_2024-01-31" unitRef="USD" name="ppih:CostsIncurredOnUncompletedContracts" scale="3" format="ixt:num-dot-decimal" decimals="-3">21,912</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Estimated earnings</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841150" contextRef="i_2024-07-31" unitRef="USD" name="ppih:EstimatedEarnings" scale="3" format="ixt:num-dot-decimal" decimals="-4">12,110</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841151" contextRef="i_2024-01-31" unitRef="USD" name="ppih:EstimatedEarnings" scale="3" format="ixt:num-dot-decimal" decimals="-4">11,270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Earned revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"><ix:nonFraction id="c116841152" contextRef="i_2024-07-31" unitRef="USD" name="ppih:EarnedRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">29,796</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"><ix:nonFraction id="c116841153" contextRef="i_2024-01-31" unitRef="USD" name="ppih:EarnedRevenue" scale="3" format="ixt:num-dot-decimal" decimals="-3">33,182</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Less billings to date</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841154" contextRef="i_2024-07-31" unitRef="USD" name="ppih:BillingsToDate" scale="3" format="ixt:num-dot-decimal" decimals="-3">27,415</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841155" contextRef="i_2024-01-31" unitRef="USD" name="ppih:BillingsToDate" scale="3" format="ixt:num-dot-decimal" decimals="-4">30,580</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841156" contextRef="i_2024-07-31" unitRef="USD" name="ppih:CostsInExcessOfBillingsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,381</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841157" contextRef="i_2024-01-31" unitRef="USD" name="ppih:CostsInExcessOfBillingsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,602</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Balance sheet classification</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841159" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,085</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841160" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:ContractWithCustomerAssetNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,097</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841161" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">704</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841162" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:ContractWithCustomerLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">495</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841163" contextRef="i_2024-07-31" unitRef="USD" name="ppih:CostsInExcessOfBillingsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,381</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841164" contextRef="i_2024-01-31" unitRef="USD" name="ppih:CostsInExcessOfBillingsNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,602</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;"><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgb(255, 255, 255);">The Company anticipates that substantially all costs incurred on&#160;uncompleted contracts&#160;as of&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;will be billed and collected within <span style="-sec-ix-hidden:c116841079">one</span> year</span><span style="background-color: rgb(255, 255, 255);"><span style="font-family: Times New Roman;">.&#160;</span></span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">Unbilled accounts receivable</span></b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">The Company has recorded<span style="background-color:#ffffff;"> $</span><ix:nonFraction id="c116841080" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:UnbilledReceivablesCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">17.9</ix:nonFraction></span><span style="background-color:#ffffff;">&#160;million</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">&#160;and $<ix:nonFraction id="c116841081" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:UnbilledReceivablesCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">16.6</ix:nonFraction>&#160;million&#160;</span>of unbilled accounts receivable&#160;on the consolidated balance sheet<span style="color:#000000;">s </span></span>as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="color:#000000;">,</span>&#160;from&#160;revenues generated by certain of its subsidiaries. The Company has fulfilled all performance obligations and has recorded revenue under the respective contracts. The deliverables under these contracts have been accepted by the customer and billings will be made once the customer takes possession of or arranges shipping for the products. The Company anticipates that substantially all of the amounts included in unbilled accounts receivable as of&#160;</span><em style="font: inherit;"> July 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;will be billed within <em style="font: inherit;">one</em> year.</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Practical expedients</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Costs to obtain a contract are <em style="font: inherit;">not</em> considered to be incremental or material, and project duration generally does <em style="font: inherit;">not</em> span more than <em style="font: inherit;">one</em> year. Accordingly, the Company applies the practical expedient for these types of costs and as such, are expensed in the period incurred.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">As a result of the Company's contracts having a duration of less than <em style="font: inherit;">one</em> year, a practical expedient was applied regarding disclosure of the aggregate amount and future timing of performance obligations that are unsatisfied or partially satisfied as of the end of the reporting period.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">9</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:InventoryDisclosureTextBlock" id="c2734967" escape="true">
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"><b>Note <em style="font: inherit;">5</em> - </b><b>Inventories</b></p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Inventories are stated at the lower of cost or net realizable value. Cost is determined using the <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out method for all inventories.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Inventories consisted of the following:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="c2734968" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Raw materials</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841171" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryRawMaterials" scale="3" format="ixt:num-dot-decimal" decimals="-3">14,777</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841172" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryRawMaterials" scale="3" format="ixt:num-dot-decimal" decimals="-3">13,787</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Work in process</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841173" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryWorkInProcess" scale="3" format="ixt:num-dot-decimal" decimals="-3">574</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841174" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryWorkInProcess" scale="3" format="ixt:num-dot-decimal" decimals="-3">611</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finished goods</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841175" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryFinishedGoods" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,275</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841176" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryFinishedGoods" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,022</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Subtotal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841177" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,626</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841178" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryGross" scale="3" format="ixt:num-dot-decimal" decimals="-4">16,420</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Less allowance</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841179" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryValuationReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">803</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841180" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryValuationReserves" scale="3" format="ixt:num-dot-decimal" decimals="-3">879</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Inventories</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841181" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,823</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841182" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">15,541</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company conducts periodic reviews&#160;of its inventory and records&#160;allowances for slow moving and obsolete items to reflect their net realizable value, which is primarily attributable to finished goods.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">10</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:IncomeTaxDisclosureTextBlock" id="c2734969" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">6</em>&#160;- Income taxes&#160;</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The determination of the consolidated provision for income taxes, deferred tax assets and liabilities and related valuation allowances requires management to make judgments and estimates. As a company with subsidiaries in foreign jurisdictions, the process of calculating income taxes involves estimating current tax obligations and exposures in each jurisdiction as well as making judgments regarding the future recoverability of deferred tax assets. The relative proportion of taxable income earned domestically versus internationally can fluctuate significantly from period to period. Changes in the estimated level of annual pre-tax income, tax laws and the results of tax audits can affect the overall effective income tax rate, which impacts the level of income tax expense and net income. Judgments and estimates related to the Company's projections and assumptions are inherently uncertain; therefore, actual results could differ materially from projections.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">The Company's worldwide effective tax rates ("ETR") for the&#160;</span><em style="font: inherit;">three</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em><span style="background-color:#ffffff;">&#160;were&#160;</span><ix:nonFraction id="c116841186" contextRef="d_2024-05-01_2024-07-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">23</ix:nonFraction>%<span style="background-color:#ffffff;">&#160;and </span><ix:nonFraction id="c116841187" contextRef="d_2023-05-01_2023-07-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">45</ix:nonFraction>%<span style="background-color:#ffffff;">, respectively. The Company's ETR was&#160;<ix:nonFraction id="c116841188" contextRef="d_2024-02-01_2024-07-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">25</ix:nonFraction>% and&#160;<ix:nonFraction id="c116841189" contextRef="d_2023-02-01_2023-07-31" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:num-dot-decimal" decimals="2">97</ix:nonFraction>% for the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>, respectively.&#160;</span>The change in the ETR is due to the ability to recognize tax benefits on losses in the United States in the current year whereas the prior year had a full valuation allowance and changes in the mix of income and loss in various jurisdictions.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company expects that future distributions from foreign subsidiaries will <em style="font: inherit;">not</em> be subject to incremental U.S. federal tax as they will be excludible&#160;from U.S. taxable income&#160;either be remittances of previously taxed earnings&#160;and profits or eligible for a full dividends received deduction. Current and future earnings in the Company's subsidiaries in Canada and Egypt are <em style="font: inherit;">not</em> permanently reinvested. The earnings from these subsidiaries are subject to tax in their local jurisdiction, and withholding taxes in these jurisdictions are considered.&#160;As such, the Company has accrued a liability of $<ix:nonFraction id="c116841194" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:UndistributedEarningsOfForeignSubsidiaries" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.7</ix:nonFraction> million as of <em style="font: inherit;"> July 31, 2024</em> related to these taxes.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:AssetImpairmentChargesTextBlock" id="c2734970" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">7</em>&#160;- Impairment of long-lived assets</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company's assessment of long-lived assets, and other identifiable intangibles is based upon factors that market participants would use in accordance with the accounting guidance for the fair value measurement of assets.&#160;At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company performed an&#160;assessment to determine whether there were any triggering events that <em style="font: inherit;"> may </em>have occurred which could indicate that the carrying value of the Company's long-lived assets are <em style="font: inherit;">not</em> recoverable, and an impairment <em style="font: inherit;"> may </em>exist. Based on this assessment, the Company did <em style="font: inherit;">not</em> identify any triggering events that would indicate that the carrying amounts <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable with respect to long-lived assets at&#160;<em style="font: inherit;"> July 31, 2024</em>.&#160; The Company will continue testing for potential impairment at least annually or as otherwise required by applicable accounting standards.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Goodwill.</b></i> The purchase price of an acquired company is allocated between intangible assets and the net tangible assets of the acquired business with the residual of the purchase price recorded as goodwill. All identifiable goodwill&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>&#160;is&#160;attributable to the purchase of the remaining <ix:nonFraction id="c116841204" contextRef="i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember" unitRef="Pure" name="us-gaap:BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="1">50</ix:nonFraction>% interest in Perma-Pipe Canada, Ltd., which occurred in <em style="font: inherit;">2016.</em></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The&#160;following table provides a reconciliation of changes in the carrying amount of goodwill:</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfGoodwillTextBlock" id="c2734971" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Foreign exchange change effect</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841214" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,222</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116841215" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3" sign="-">66</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841216" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,156</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">The Company performs an impairment assessment of goodwill annually&#160;as of <em style="font: inherit;"> January 31,</em>&#160;or more frequently if triggering events occur, based on the estimated fair value of the related reporting unit or intangible asset. Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. During the period ended&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company performed a periodic assessment to determine whether there were any triggering events that <em style="font: inherit;"> may </em>have occurred which could indicate that more likely than <em style="font: inherit;">not</em>&#160;that the fair value of the reporting unit did <em style="font: inherit;">not</em> exceed its carrying value, resulting in an impairment. Based on this assessment, the Company did <em style="font: inherit;">not</em> identify any triggering events that would indicate that the fair value is less than the carrying value of the reporting unit at&#160;<em style="font: inherit;"> July 31, 2024</em>.&#160;Accordingly, the Company did <em style="font: inherit;">not</em> proceed with performing an impairment test as a result of this periodic assessment. The Company will continue testing for impairment at least annually&#160;as of <em style="font: inherit;"> January 31,</em>&#160;or as otherwise required by applicable accounting standards.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">11</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="c2734972" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">8</em>&#160;- Stock-based compensation&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company has prior incentive plans under which previously granted awards remain outstanding, but under which <em style="font: inherit;">no</em> new awards <em style="font: inherit;"> may </em>be granted, including the Company's <em style="font: inherit;">2021</em> Omnibus Stock Incentive Plan, which expired in <em style="font: inherit;"> May 2024. </em>At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company had reserved a total <span style="background-color:#ffffff;"><ix:nonFraction id="c116841220" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:CommonStockCapitalSharesReservedForFutureIssuance" scale="0" format="ixt:num-dot-decimal" decimals="INF">196,026</ix:nonFraction></span>&#160;shares for grants and issuances under these incentive plans, including&#160;issuances pursuant to unvested or unexercised prior awards.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company's prior incentive plans provided for the grant of deferred shares, non-qualified stock options, incentive stock options, restricted shares, restricted stock units, and performance-based restricted stock units intended to qualify under section <em style="font: inherit;">422</em> of the Internal Revenue Code. The prior incentive plans authorized awards to officers, employees, consultants, and independent directors.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company's <em style="font: inherit;">2024</em> Omnibus Stock Incentive Plan, dated <em style="font: inherit;"> May 28, 2024, </em>was approved by the Company's stockholders in <em style="font: inherit;"> July 2024 (</em><em style="font: inherit;">"2024</em> Plan"). The <em style="font: inherit;">2024</em> Plan will expire&#160;in <em style="font: inherit;"> July 2027. </em>The <em style="font: inherit;">2024</em> Plan authorizes awards to officers, employees, consultants, and independent directors.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Grants were made in connection with the <em style="font: inherit;">2024</em> Plan and the prior incentive plans to employees, officers, and independent directors, as further described below.&#160;&#160;&#160;</p>
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     &#160;
   </div>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Stock-based&#160;compensation expense</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company has granted stock-based compensation awards to eligible employees, officers&#160;or independent directors. The Company recognized the following&#160;stock-based compensation expense&#160;for the periods presented:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" id="c2734973" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841261" contextRef="d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">177</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841262" contextRef="d_2023-05-01_2023-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">227</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841263" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">396</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841264" contextRef="d_2023-02-01_2023-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">456</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><i><b>Stock options</b></i></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The Company did <span style="-sec-ix-hidden:c116841227"><span style="-sec-ix-hidden:c116841238">not</span></span> grant any stock options during the <em style="font: inherit;">three</em> or <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>. The following table&#160;summarizes&#160;the Company's stock option activity:</p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="c2734974" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Options</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Exercise Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Remaining Contractual Term (In years)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841269" contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" scale="3" format="ixt:num-dot-decimal" decimals="-3">22</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841270" contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" scale="0" format="ixt:num-dot-decimal" decimals="INF">11.15</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="d_2023-02-01_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c116841271" format="ixt-sec:duryear">0.7</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841272" contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">6</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Exercised</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116841273" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" format="ixt:num-dot-decimal" decimals="-3">1</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841274" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:num-dot-decimal" decimals="INF">6.85</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841276" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">2</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Expired or forfeited</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841277" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" scale="3" format="ixt:num-dot-decimal" decimals="-3">17</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841278" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:num-dot-decimal" decimals="INF">12.41</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding and exercisable at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841281" contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" scale="3" format="ixt:num-dot-decimal" decimals="-3">4</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841282" contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USDPerShare" name="us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" scale="0" format="ixt:num-dot-decimal" decimals="INF">6.89</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonNumeric contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="c116841283" format="ixt-sec:duryear">1.4</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841284" contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" scale="3" format="ixt:num-dot-decimal" decimals="-4">10</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">There was <ix:nonFraction id="c116841230" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> vesting, expiration or forfeiture of previously unvested stock options during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em></span><span style="background-color:#ffffff;">. In addition</span><span style="background-color:#ffffff;">, there were <ix:nonFraction id="c116841232" contextRef="i_2024-07-31" unitRef="Share" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> remaining unvested stock options outstanding, and therefore <ix:nonFraction id="c116841233" contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> unrecognized compensation expense related to unvested stock options.</span></p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">12</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Restricted stock</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The following table summarizes the Company's restricted stock activity for the&#160;<em style="font: inherit;">six</em> months ended&#160;<em style="font: inherit;"> July 31, 2024</em>:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" id="c2734975" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Restricted Shares</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841288" contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" scale="3" format="ixt:num-dot-decimal" decimals="-3">222</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841289" contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">9.33</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841290" contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,078</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841291" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="3" format="ixt:num-dot-decimal" decimals="-3">108</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841292" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">8.81</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Vested and issued</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c116841294" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" scale="3" format="ixt:num-dot-decimal" decimals="-3">73</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841295" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">9.36</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Forfeited or retired for taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841297" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="ppih:StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" scale="3" format="ixt:num-dot-decimal" decimals="-3">27</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841298" contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">10.25</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841300" contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" scale="3" format="ixt:num-dot-decimal" decimals="-4">230</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841301" contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:num-dot-decimal" decimals="INF">9.05</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841302" contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">2,083</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">As of <em style="font: inherit;"> July 31, 2024</em>, there was $<ix:nonFraction id="c116841236" contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.5</ix:nonFraction><span style="background-color:#ffffff;">&#160;million</span> of unrecognized compensation expense related to unvested restricted stock granted under the&#160;plans. These&#160;costs are&#160;expected to be recognized over a weighted average period of <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c116841237" format="ixt-sec:duryear">2.1</ix:nonNumeric><span style="background-color:#ffffff;">&#160;years</span>.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:EarningsPerShareTextBlock" id="c2734976" escape="true">
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">9</em>&#160;- Earnings per share</b></p>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="c2734977" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted average common shares outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841313" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,954</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841314" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,029</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841315" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-4">7,930</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841316" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Dilutive effect of equity compensation plans</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841317" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-3">171</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841318" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-4">110</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841319" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:num-dot-decimal" decimals="-3">57</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841320" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Weighted average common shares outstanding assuming full dilution</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841321" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,125</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841322" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,139</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841323" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,987</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841324" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,017</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841325" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">0</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841326" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">79</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841327" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">114</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841328" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">18</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock with exercise prices or grant date prices below the average market prices</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841329" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="3" format="ixt:num-dot-decimal" decimals="-3">171</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841330" contextRef="d_2023-05-01_2023-07-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="3" format="ixt:num-dot-decimal" decimals="-4">110</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841331" contextRef="d_2024-02-01_2024-07-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="3" format="ixt:num-dot-decimal" decimals="-3">57</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841332" contextRef="d_2023-02-01_2023-07-31" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="3" format="ixt:num-dot-decimal" decimals="-4">170</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss) attributable to common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841333" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,289</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841334" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,022</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841335" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-3">4,732</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116841336" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:num-dot-decimal" decimals="-5" sign="-">100</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Earnings (loss) per share attributable to common stock</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841338" contextRef="d_2024-05-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.41</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841339" contextRef="d_2023-05-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.13</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841340" contextRef="d_2024-02-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.60</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116841341" contextRef="d_2023-02-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:num-dot-decimal" decimals="INF" sign="-">0.01</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841342" contextRef="d_2024-05-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.40</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841343" contextRef="d_2023-05-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.13</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841344" contextRef="d_2024-02-01_2024-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF">0.59</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c116841345" contextRef="d_2023-02-01_2023-07-31" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:num-dot-decimal" decimals="INF" sign="-">0.01</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">13</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:DebtDisclosureTextBlock" id="c2734978" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">10</em>&#160;- Debt</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Debt totaled $<ix:nonFraction id="c116841347" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:DebtAndCapitalLeaseObligations" scale="6" format="ixt:num-dot-decimal" decimals="-5">27.9</ix:nonFraction> million and $<ix:nonFraction id="c116841348" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:DebtAndCapitalLeaseObligations" scale="6" format="ixt:num-dot-decimal" decimals="-5">25.7</ix:nonFraction> million at <em style="font: inherit;"> July 31, 2024</em>&#160;and <em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Revolving lines -&#160;North America</b></i><b>.&#160;</b>On <em style="font: inherit;"> September 20, 2018, </em>the Company and certain of its U.S. and Canadian subsidiaries (collectively, together with the Company, the &#8220;North American Loan Parties&#8221;) entered into a Revolving Credit and Security Agreement (the &#8220;Credit Agreement&#8221;) with PNC Bank, National Association ("PNC"), as administrative agent and lender, providing for a <span style="-sec-ix-hidden:c116841349">three</span>-year $<ix:nonFraction id="c116841350" contextRef="i_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">18</ix:nonFraction>&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Senior Credit Facility&#8221;).</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">On <em style="font: inherit;"> September 17, 2021,&#160;</em>the North American Loan Parties&#160;executed an extension of the Credit Agreement&#160;with PNC, providing for a new <span style="-sec-ix-hidden:c116841351">five</span>-year $<ix:nonFraction id="c116841352" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">18</ix:nonFraction>&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Renewed Senior Credit Facility&#8221;). The Company's&#160;obligations under the Renewed Senior Credit Facility are currently guaranteed by Perma-Pipe Canada, Inc. Each of the North American Loan Parties other than Perma-Pipe Canada, Inc. (collectively, the "Borrowers") is a borrower under the Renewed Senior Credit Facility.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Borrowers have used and will continue to use borrowings under the Renewed Senior Credit Facility (i)&#160;to fund future capital expenditures; (ii)&#160;to fund ongoing working capital needs; and (iii)&#160;for other corporate purposes, including potentially additional stock&#160;repurchases. Borrowings under the Renewed Senior Credit Facility bear&#160;interest at a rate equal to an alternate base rate, SOFR&#160;rate index, plus, in each case, an applicable margin. The applicable margin is based on a fixed charge coverage ratio ("FCCR") range. Interest on alternate base rate borrowings is the alternate base rate (as defined&#160;in the Renewed Senior Credit Facility) plus an applicable margin ranging from <ix:nonFraction id="c116841353" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="2">1.00</ix:nonFraction>% to <ix:nonFraction id="c116841354" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">1.50</ix:nonFraction>%, based on the FCCR in the most recently reported period. Interest on SOFR rate borrowings is the SOFR&#160;rate (as defined in the Renewed Senior Credit Facility) plus an applicable margin ranging from <ix:nonFraction id="c116841355" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="2">2.00</ix:nonFraction>% to <ix:nonFraction id="c116841356" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">2.50</ix:nonFraction>%, based on the FCCR in the most recently reported period, as well as an additional SOFR adjustment ranging from <ix:nonFraction id="c116841357" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">0.10</ix:nonFraction>% to <ix:nonFraction id="c116841358" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="4">0.25</ix:nonFraction>%, based on the term of the interest period. Additionally, the Borrowers pay a <ix:nonFraction id="c116841359" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" scale="-2" format="ixt:num-dot-decimal" decimals="4">0.25</ix:nonFraction>% per annum facility fee on the unused portion of the Renewed Senior Credit Facility.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Subject to certain exceptions, borrowings under the Renewed Senior Credit Facility are secured by substantially all of the North American Loan Parties&#8217; assets. The Renewed Senior Credit Facility matures on <em style="font: inherit;"> September 20, 2026. </em>Subject to certain qualifications and exceptions, the Renewed Senior Credit Facility contains covenants that, among other things, restrict the North American Loan Parties&#8217; ability to create liens, merge or consolidate, consummate acquisitions, make investments, dispose of assets, incur debt, and pay dividends and other distributions. In addition, the North American Loan Parties <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> make&#160;capital expenditures in excess of $<ix:nonFraction id="c116841361" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="USD" name="ppih:LineOfCreditFacilityCapitalExpendituresRestrictions" scale="6" format="ixt:num-dot-decimal" decimals="-6">5.0</ix:nonFraction> million annually, plus a limited carryover of unused amounts. Further, the North American Loan Parties <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> make repurchases of the Company's common stock in excess of $<ix:nonFraction id="c116841363" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="USD" name="ppih:LineOfCreditFacilityCommonStockRepurchaseRestrictions" scale="6" format="ixt:num-dot-decimal" decimals="-6">3.0</ix:nonFraction> million.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Renewed Senior Credit Facility also contains financial covenants requiring&#160;the North American Loan Parties to achieve a ratio of its EBITDA (as defined in the Renewed Senior Credit Facility) to the sum of scheduled cash principal payments on indebtedness for borrowed money and interest payments on the advances under the Renewed Senior Credit Facility&#160;to be <em style="font: inherit;">not</em> less than <ix:nonFraction id="c116841365" contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="Pure" name="ppih:LineOfCreditFacilityFixedChargeCoverageRatioRequired" scale="0" format="ixt:num-dot-decimal" decimals="INF">1.10</ix:nonFraction> to <em style="font: inherit;">1.00</em> for any <em style="font: inherit;">five</em> consecutive days in which the undrawn availability is less than $<ix:nonFraction id="c116841368" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="USD" name="ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" scale="6" format="ixt:num-dot-decimal" decimals="-6">3.0</ix:nonFraction> million&#160;or any day in which the undrawn availability is less than $<ix:nonFraction id="c116841369" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="USD" name="ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" scale="6" format="ixt:num-dot-decimal" decimals="-6">2.0</ix:nonFraction> million. In order to cure any future breach of these covenants by the North American Loan Parties, the Company <em style="font: inherit;"> may </em>repatriate cash from any of its foreign subsidiaries that are otherwise <em style="font: inherit;">not</em> a party to the Renewed Senior Credit Facility in an amount which, when added to the amount of the Company&#8217;s Consolidated EBITDA, would result in compliance on a pro forma basis. The Company was in compliance with respect to these covenants as of&#160;<em style="font: inherit;"> July 31, 2024</em>.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Renewed Senior Credit Facility contains customary events of default. If an event of default occurs and is continuing, then PNC <em style="font: inherit;"> may </em>terminate all commitments to extend further credit and declare all amounts outstanding under the Renewed Senior Credit Facility due and payable immediately. In addition, if any of the North American Loan Parties or certain of their subsidiaries become the subject of voluntary or involuntary proceedings under any bankruptcy, insolvency or similar law, then any outstanding obligations under the Renewed Senior Credit Facility will automatically become immediately due and payable. Loans outstanding under the Renewed Senior Credit Facility will bear interest at a rate of <ix:nonFraction id="c116841371" contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember" unitRef="Pure" name="ppih:LineOfCreditFacilityDefaultAdditionalInterestRate" scale="-2" format="ixt:num-dot-decimal" decimals="2">2.00</ix:nonFraction>% per annum in excess of the otherwise applicable rate (i) while a bankruptcy event of default exists or (ii) upon the lender's&#160;request, during the continuance of any other event of default.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">As of <em style="font: inherit;"> July 31, 2024</em>,&#160;the Company had borrowed an aggregate of <span style="background-color:#ffffff">$<ix:nonFraction id="c116841372" contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LinesOfCreditCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.7</ix:nonFraction></span><span style="background-color:#ffffff">&#160;million at a rate of <ix:nonFraction id="c116841373" contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="1">10.0</ix:nonFraction>%</span><span style="background-color:#ffffff">&#160;and had $<ix:nonFraction id="c116841374" contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.7</ix:nonFraction></span><span style="background-color:#ffffff">&#160;million available under the Renewed Senior Credit Facility. As of <em style="font: inherit;"> January 31, 2024</em>, the Company had borrowed an aggregate of $<ix:nonFraction id="c116841375" contextRef="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LinesOfCreditCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.5</ix:nonFraction>&#160;million and had $<ix:nonFraction id="c116841376" contextRef="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">4.0</ix:nonFraction>&#160;million available under the Renewed Senior Credit Facility. &#160;</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">14</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Finance obligation&#160;- buildings and land. </span></b></i><span style="background-color:#ffffff;">On <em style="font: inherit;"> April 14, 2021, </em>the Company entered into a purchase and sale agreement (the "Purchase and Sale Agreement"). Pursuant to the terms of the Purchase and Sale Agreement, the Company sold its land and buildings in Lebanon, Tennessee (the "Property") for $<ix:nonFraction id="c116841378" contextRef="i_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration" scale="6" format="ixt:num-dot-decimal" decimals="-5">10.4</ix:nonFraction> million. The transaction generated net cash proceeds of $<ix:nonFraction id="c116841379" contextRef="d_2021-04-14_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment" scale="6" format="ixt:num-dot-decimal" decimals="-5">9.1</ix:nonFraction>&#160;million. Concurrently with the sale, the Company paid off the approximately $<ix:nonFraction id="c116841380" contextRef="d_2021-04-14_2021-04-14_DebtInstrumentAxis-MortgageNoteSecuredByTennesseeManufacturingFacilityMember" unitRef="USD" name="us-gaap:RepaymentsOfSecuredDebt" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.9</ix:nonFraction> million&#160;mortgage note on the Property to its lender.&#160; The&#160;Company used the remaining proceeds to repay its borrowings under the Senior Credit Facility, for&#160;strategic investments, and for general corporate needs. Concurrent with the sale of the Property, the Company entered into a&#160;<span style="-sec-ix-hidden:c116841381">fifteen</span>-year lease agreement (the &#8220;Lease Agreement&#8221;), whereby the Company leases back the Property at an annual rental rate of&#160;approximately $<ix:nonFraction id="c116841382" contextRef="d_2021-04-14_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="ppih:SaleLeasebackTransactionAnnualRentalPaymentsAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.8</ix:nonFraction> million, subject to annual rent increases of&#160;<ix:nonFraction id="c116841383" contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="Pure" name="ppih:LesseeFinanceLeaseAnnualRentIncreasePercentage" scale="-2" format="ixt:num-dot-decimal" decimals="2">2.0</ix:nonFraction>%. Under the Lease Agreement, the Company has&#160;<span style="-sec-ix-hidden:c116841384">four</span> consecutive options to extend the term of the lease by&#160;<span style="-sec-ix-hidden:c116841385">five</span> years for each such option. &#160;</span></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">In accordance with ASC&#160;<em style="font: inherit;">842,</em> <i>Leases</i>, this transaction was recorded as a failed sale and leaseback as the present value of lease payments exceeded&#160;substantially the&#160;fair value of the underlying assets. The Company utilized an incremental borrowing rate of <ix:nonFraction id="c116841387" contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="Pure" name="us-gaap:LesseeFinanceLeaseDiscountRate" scale="-2" format="ixt:num-dot-decimal" decimals="2">8.0</ix:nonFraction>% to determine&#160;the finance obligation&#160;to record for the amounts received&#160;and will continue to depreciate the assets.&#160;The current portion of the finance obligation of $<ix:nonFraction id="c116841388" contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="us-gaap:LongTermDebtAndCapitalLeaseObligationsCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.2</ix:nonFraction>&#160;million is recognized in current maturities of long-term debt and the long-term portion of $<ix:nonFraction id="c116841389" contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember" unitRef="USD" name="ppih:LongtermDebtAndLeaseObligationNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">8.9</ix:nonFraction>&#160;million is recognized&#160;in&#160;long-term finance obligation&#160;on the Company's consolidated balance sheets as of <em style="font: inherit;"> July 31, 2024</em></span><span style="background-color:#ffffff;">.&#160;The net carrying amount of the financial liability and remaining assets will be <em style="font: inherit;">zero</em> at the end of the lease term.</span></p>
   <p style="margin: 0pt 7.2pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Revolving lines -&#160;foreign</span></b></i><b><span style="background-color:#ffffff;">.</span></b><span style="background-color:#ffffff;"> The Company also has credit arrangements used by its Middle Eastern subsidiaries in the U.A.E.</span><span style="background-color:#ffffff;">,</span><span style="background-color:#ffffff;"> Egypt </span><span style="background-color:#ffffff;">and Saudi Arabia </span><span style="background-color:#ffffff;">as discussed further below.</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i>United Arab Emirates</i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company has&#160;a revolving line for <ix:nonFraction id="c116841391" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="AED" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">8.0</ix:nonFraction>&#160;million U.A.E. Dirhams (approximately $<ix:nonFraction id="c116841392" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.2</ix:nonFraction>&#160;million at <em style="font: inherit;"> July 31, 2024</em>) from a bank in the U.A.E. As of <em style="font: inherit;"> July 31, 2024</em>&#160;the&#160;facility has&#160;an interest rate of approximately&#160;<ix:nonFraction id="c116841393" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">8.6</ix:nonFraction>%, and&#160;expired in <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">2024,</em> however, the Company has started&#160;the process to renew&#160;and extend&#160;this credit arrangement and the credit facility has continued without interruption and penalty.&#160;The Company had borrowed an aggregate of <span style="background-color:#ffffff;">$<ix:nonFraction id="c116841395" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction></span>&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024</em> and $<ix:nonFraction id="c116841398" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.2</ix:nonFraction> million&#160;as of <em style="font: inherit;"> January 31, 2024</em>, respectively, and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;<em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing availability of approximately $<ix:nonFraction id="c116841401" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction> million and $<ix:nonFraction id="c116841402" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.9</ix:nonFraction> million, respectively.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt; text-align: justify;">The Company has a revolving line for <ix:nonFraction id="c116841403" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="AED" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">20.5</ix:nonFraction>&#160;million U.A.E. Dirhams (approximately $<ix:nonFraction id="c116841404" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.6</ix:nonFraction>&#160;million&#160;at <em style="font: inherit;"> July 31, 2024</em>) from a bank in the U.A.E. As of <em style="font: inherit;"> July 31, 2024</em>&#160;the&#160;facility has an interest rate of approximately&#160;<ix:nonFraction id="c116841405" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">8.7</ix:nonFraction>%. The facility expired in <em style="font: inherit;"> August 2024, </em>however, the Company has started the process to renew and extend this credit arrangement and the credit facility has continued without interruption or penalty.&#160;The Company had borrowed an aggregate o<span style="background-color:#ffffff;">f $<ix:nonFraction id="c116841406" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction>&#160;</span>million&#160;as of <em style="font: inherit;"> July 31, 2024</em> and $<ix:nonFraction id="c116841408" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction> million&#160;as of <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;<em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing availability of approximately <span style="background-color:#ffffff;">$<ix:nonFraction id="c116841412" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction>&#160;</span>million and<span style="background-color:#ffffff;"> $<ix:nonFraction id="c116841413" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction> </span>million, respectively.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i>Egypt</i></p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <div>
    <div style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <div style="font-size:10pt">
      <div style="font-family:Times New Roman">
        In
       <em style="font: inherit;"> June 2021, </em>and as renewed or amended subsequently thereafter, the Company's Egyptian subsidiary entered into a credit arrangement with a bank in Egypt for a revolving line of
       <ix:nonFraction id="c116841414" contextRef="i_2021-06-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="EGP" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-8">100.0</ix:nonFraction>&#160;million Egyptian Pounds (approximately
       <span style="background-color:#ffffff">$<ix:nonFraction id="c116841415" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.1</ix:nonFraction></span>
       <span style="background-color:#ffffff">&#160;million</span> at
       <em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by certain assets (such as accounts receivable) of the Company's Egyptian subsidiary. Among other covenants, the credit arrangement established a maximum leverage ratio allowable and restricted the Company's Egyptian subsidiary's ability to undertake any additional debt.&#160;As of
       <em style="font: inherit;"> July 31, 2024</em>, the&#160;facility has an interest rate of approximately
       <span style="background-color:#ffffff">&#160;<ix:nonFraction id="c116841416" contextRef="i_2023-08-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">20.8</ix:nonFraction>%</span>
       <span style="background-color:#ffffff;">and&#160;expires&#160;in <em style="font: inherit;"> November 2024.&#160;</em>As of&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company had substantially nothing outstanding with respect to this credit arrangement, and approximately $<ix:nonFraction id="c116841417" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.4</ix:nonFraction> million outstanding at&#160;<em style="font: inherit;"> January 31, 2024</em>, which is presented as a component of current&#160;</span>maturities of long-term debt in the Company's consolidated balance sheets. Further, as of&#160;
       <em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;
       <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing capacity
       <span style="background-color:#ffffff;">of $<ix:nonFraction id="c116841418" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.1</ix:nonFraction> million&#160;and $<ix:nonFraction id="c116841419" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.2</ix:nonFraction> m</span>illion,&#160;respectively.&#160;
      </div>
     </div>
    </div>
    <div style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      &#160;
    </div>
   </div>
   <div>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
       In
      <em style="font: inherit;"> December 2021, </em>the Company entered into a credit arrangement for project financing with a bank in Egypt for
      <ix:nonFraction id="c116841420" contextRef="i_2021-12-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="EGP" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">28.2</ix:nonFraction>&#160;million Egyptian Pounds. As this project has progressed and the Company has made collections, the facility has decreased to a current amount of&#160;
      <ix:nonFraction id="c116841421" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="EGP" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.1</ix:nonFraction>&#160;million Egyptian Pounds&#160;(approximatel
      <span style="background-color:#ffffff;">y $<ix:nonFraction id="c116841422" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;mi</span>llion at
      <em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by the contract for a project being financed by the Company's Egyptian subsidiary.
      <span style="background-color:#ffffff">The facility has an interest rate of approximately&#160;<ix:nonFraction id="c116841423" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="2">11.0</ix:nonFraction>%</span>
      <span style="background-color:#ffffff">&#160;and, as of</span>&#160;
      <em style="font: inherit;"> November 2022, </em>is
      <ix:nonFraction id="c116841424" contextRef="i_2022-11-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> longer available for borrowings by the Company. The facility will expire in connection with final customer balance collections and the completion of the project. The Company had approximately
      <span style="background-color:#ffffff;"> $<ix:nonFraction id="c116841425" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;</span>million outstanding&#160;
      as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets.
     </div>
    </div>
   </div>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><i>Saudi Arabia</i></p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">In <em style="font: inherit;"> March 2022, </em>the Company's Saudi Arabian subsidiary entered into a credit arrangement with a bank in Saudi Arabia for a revolving line of&#160;<ix:nonFraction id="c116841427" contextRef="i_2022-03-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-6">37.0</ix:nonFraction>&#160;million Saudi Riyals (approximately $<ix:nonFraction id="c116841428" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">9.9</ix:nonFraction>&#160;million at&#160;<em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Saudi Arabia. The line is secured by certain assets (such as accounts receivable) of the Company's Saudi Arabian subsidiary. The&#160;facility was renewed in <em style="font: inherit;"> May 2024 </em>with substantially the same terms and conditions and expires in <em style="font: inherit;"> May 2025. </em>As of <em style="font: inherit;"> July 31, 2024</em>, the facility has an interest rate of approximately&#160;<ix:nonFraction id="c116841429" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">9.7</ix:nonFraction>%.&#160;The Company had borrowed an aggregate o<span style="background-color:#ffffff;">f $<ix:nonFraction id="c116841430" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.6</ix:nonFraction>&#160;million&#160;and $<ix:nonFraction id="c116841431" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" scale="6" format="ixt:num-dot-decimal" decimals="-5">3.2</ix:nonFraction>&#160;million&#160;</span>as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. The unused borrowing availability attributable to this credit arrangement at&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;<em style="font: inherit;"> January 31, 2024</em>, was <span style="background-color:#ffffff;">$<ix:nonFraction id="c116841432" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.3</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841433" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.1</ix:nonFraction> </span>million, respectively.&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">15</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">These credit arrangements are in the form of overdraft facilities and project financing at rates competitive in the countries in which the Company operates. The lines are secured by certain equipment, certain assets (such as accounts receivable and inventory), and a guarantee by the Company. Some credit arrangement covenants require a minimum tangible net worth to be maintained, including maintaining certain levels of intercompany subordinated debt. In addition, some of the revolving credit facilities restrict payment of dividends or undertaking of additional debt. The Company guarantees only a portion of the subsidiaries' debt, including foreign debt. The amount of foreign subsidiary debt guaranteed by the Company was approxim<span style="background-color:#ffffff;">ately $<ix:nonFraction id="c116841435" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="ppih:LineOfCreditFacilityGuaranteedAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.1</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841436" contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="ppih:LineOfCreditFacilityGuaranteedAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction> million at&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.&#160;</span></p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company was in compliance with the covenants under the credit arrangements in the U.A.E., Egypt and Saudi Arabia as of <em style="font: inherit;"> July 31, 2024</em>, <span style="background-color:#ffffff;">with the exception of those arrangements that have expired or are set to expire and have <em style="font: inherit;">not</em> yet been renewed.&#160;Although certain of the arrangements have expired and the borrowings could be required to be repaid immediately by the banks, the Company is in regular communication with&#160;the respective banks throughout the renewal process and all of the&#160;arrangements have continued without interruption or penalty. </span>On <em style="font: inherit;"> July 31, 2024</em>, interest rates were based on (i) the Emirates Inter Bank Offered Rate&#160;plus <ix:nonFraction id="c116841438" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-EIBORMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="2">3.0</ix:nonFraction>% to <ix:nonFraction id="c116841439" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-EIBORMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">3.5</ix:nonFraction>% per annum for the U.A.E. credit arrangements, <em style="font: inherit;">two</em>&#160;of which have&#160;a minimum interest rate of <ix:nonFraction id="c116841441" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:DebtInstrumentInterestRateStatedPercentage" scale="-2" format="ixt:num-dot-decimal" decimals="3">4.5</ix:nonFraction>% per annum; (ii)&#160;either the Central Bank of Egypt corporate loan rate plus <ix:nonFraction id="c116841442" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">1.5</ix:nonFraction>% to <ix:nonFraction id="c116841443" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">3.5</ix:nonFraction>% per annum or the stated interest rate in the agreements for the Egypt credit arrangements;&#160;and (iii) the Saudi Inter-Bank Offered Rate plus <ix:nonFraction id="c116841444" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_VariableRateAxis-SIBORMember" unitRef="Pure" name="us-gaap:DebtInstrumentBasisSpreadOnVariableRate1" scale="-2" format="ixt:num-dot-decimal" decimals="3">3.5</ix:nonFraction>% for the Saudi Arabia credit arrangement. Based on these base rates, as of <em style="font: inherit;"> July 31, 2024</em>, the Company's interest rates ranged from&#160;<ix:nonFraction id="c116841445" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">8.6</ix:nonFraction>% to <ix:nonFraction id="c116841446" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">20.8</ix:nonFraction>%, with a weighted average rate of <ix:nonFraction id="c116841447" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-WeightedAverageMember" unitRef="Pure" name="us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd" scale="-2" format="ixt:num-dot-decimal" decimals="3">11.5</ix:nonFraction>%, and the Company had facility limits totaling <span style="background-color:#ffffff;">$<ix:nonFraction id="c116841448" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">24.7</ix:nonFraction></span><span style="background-color:#ffffff;">&#160;million</span> under these credit arrangements. <span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">As of </span><em style="font: inherit;"> July 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">,&#160;</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">$<ix:nonFraction id="c116841449" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="us-gaap:LettersOfCreditOutstandingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">7.1</ix:nonFraction></span><span style="background-color:#ffffff;">&#160;million</span></span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> o</span><span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">f availability was used to support letters of credit to guarantee amounts committed for inventory purchases and for performance guarantees. Additionally, as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">, the Company had borrow</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">ed </span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">$<ix:nonFraction id="c116841450" contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfDebt" scale="6" format="ixt:num-dot-decimal" decimals="-5">7.8</ix:nonFraction></span><span style="background-color:#ffffff;">&#160;million</span>&#160;and had an additional <span style="background-color:#ffffff;">$<ix:nonFraction id="c116841451" contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember" unitRef="USD" name="us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity" scale="6" format="ixt:num-dot-decimal" decimals="-5">12.6</ix:nonFraction></span><span style="background-color:#ffffff;">&#160;million</span> of </span>borrowing remaining available under the foreign revolving credit arrangements. The foreign revolving lines balances were included as a component of current maturities of long-term debt in the Company's consolidated balance sheets&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">In <em style="font: inherit;"> June 2023, </em>the Company&#160;assumed a promissory note of approximately $<ix:nonFraction id="c116841452" contextRef="i_2023-06-30_DebtInstrumentAxis-PromissoryNoteMember" unitRef="USD" name="us-gaap:DebtInstrumentFaceAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.8</ix:nonFraction>&#160;million in connection with the formation of the joint venture with Gulf Insulation Group<span style="background-color:#ffffff;"> (see Note <em style="font: inherit;">16</em>). I</span>n&#160;accordance with the promissory note, all principal is due and payable on the maturity date of <em style="font: inherit;"> April 9, 2026, </em>with the option to prepay, in whole or in part, at any time prior to the maturity date, without premium or penalty.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Mortgages. </b></i>On <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">28,</em> <em style="font: inherit;">2016,</em> the Company entered into a mortgage agreement&#160;secured by the Company's manufacturing facility located in Alberta, Canada&#160;that matures on <em style="font: inherit;"> December&#160;</em><span style="-sec-ix-hidden:c116841456">23,</span> <em style="font: inherit;">2042.</em> As of <em style="font: inherit;"> July 31, 2024</em>, the remaining balance on the mortgage in Canada is approximately CAD <ix:nonFraction id="c116841458" contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember" unitRef="CAD" name="us-gaap:SecuredDebt" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.9</ix:nonFraction>&#160;million (approximately $<ix:nonFraction id="c116841459" contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember" unitRef="USD" name="us-gaap:SecuredDebt" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.3</ix:nonFraction>&#160;million at <em style="font: inherit;"> July 31, 2024</em>).&#160;The interest rate is variable,&#160;and&#160;was <ix:nonFraction id="c116841460" contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember" unitRef="Pure" name="us-gaap:DebtInstrumentInterestRateEffectivePercentage" scale="-2" format="ixt:num-dot-decimal" decimals="3">8.8</ix:nonFraction>%<span style="background-color:#ffffff;">&#160;</span>at <em style="font: inherit;"> July 31, 2024</em>. The principal balance is included as a component of long-term debt, less current maturities in the Company's consolidated balance sheets and is presented net of issuance costs of $<ix:nonFraction id="c116841461" contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember" unitRef="USD" name="us-gaap:DeferredFinanceCostsNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:LesseeOperatingAndFinanceLeasesTextBlock" id="c2734979" escape="true">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">11</em>&#160;- Leases</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company accounts for its leases under ASC <em style="font: inherit;">842,</em> <i>Leases</i>.&#160;Under this guidance, arrangements meeting the definition of a lease are classified as operating or financing leases, and are recorded on the consolidated balance sheets.&#160;Operating leases are included in operating lease right-of-use (&#8220;ROU&#8221;) assets, operating lease liabilities short-term, and operating lease liabilities long-term&#160;in the Company's consolidated balance sheets. Finance leases are included in property, plant and equipment, current maturities of long-term debt, and long-term debt less current maturities in the Company's consolidated balance sheets.&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">ROU assets represent the Company's right to use an underlying asset for the lease term and lease liabilities represent the Company's obligation to make lease payments arising from the lease calculated by discounting fixed lease payments over the lease term at the rate implicit in the lease or the Company&#8217;s incremental borrowing rate.&#160; Lease liabilities are increased by interest and reduced by payments each period, and the ROU asset is amortized over the lease term.&#160; For operating leases, interest on the lease liability and the amortization of the ROU asset result in straight-line rent expense over the lease term.&#160; For finance leases, interest on the lease liability and the amortization of the ROU asset results in front-loaded expense over the lease term.&#160; Variable lease expenses are recorded when incurred.&#160;ROU assets and liabilities are recognized at the commencement date of the lease based on the present value of lease payments over the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">As most of the Company's leases do <em style="font: inherit;">not</em> provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at the commencement date in determining the present value of lease payments.&#160;The incremental borrowing rate is the rate of interest that the Company would have to pay to borrow on a collateralized basis over a similar term and amount equal to the lease payments in a similar economic environment.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">In calculating the ROU asset and lease liability, the Company elects to combine lease and non-lease components. Additionally, the Company excludes short-term leases having an initial term&#160;of <em style="font: inherit;">12</em> months or less in accordance with&#160;the new guidance as an accounting policy election,&#160;and recognizes rent expense on a straight-line basis over the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Operating Leases.&#160;</b></i>In <em style="font: inherit;"> August 2020, </em>the Company entered into a new lease in Abu Dhabi for land upon which the Company built a facility. The initial annual payments were approximately <ix:nonFraction id="c116841482" contextRef="d_2023-02-01_2024-01-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember" unitRef="AED" name="ppih:LesseeOperatingLeaseAnnualPayment" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.2</ix:nonFraction> million U.A.E. Dirhams (approximatel<span style="background-color:#ffffff;">y $<ix:nonFraction id="c116841483" contextRef="d_2024-02-01_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember" unitRef="USD" name="ppih:LesseeOperatingLeaseAnnualPayment" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;</span>million at&#160;<em style="font: inherit;"> July 31, 2024</em>), inclusive of rent, escalation clauses, and other common charges contained in the agreement. The lease expires in <em style="font: inherit;"> August 2050.&#160;</em></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><span style="background-color:#ffffff;">In <em style="font: inherit;"> March </em>and <em style="font: inherit;"> December 2022, </em>the Company served&#160;Notices of Termination to its lessor for the Company's lease of land and buildings in Fujairah in the U.A.E.&#160;The Company served the Notices of Termination in connection with the Company's intended relocation to a different facility in Abu Dhabi. The Company vacated portions of the leased space in <em style="font: inherit;"> December 2022 </em>and expects&#160;to vacate the remaining space in <em style="font: inherit;"> December 2024. </em>The <em style="font: inherit;">first</em> Notice of Termination required that the Company pay an additional amount equal to <em style="font: inherit;">three</em> months' rent after that termination to enable the lessor to prepare the assets for lease by another party.&#160;As a result of the termination, the Company has recognized adjustments to the amounts recorded in the consolidated financial statements as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color:#ffffff;">. The termination resulted in decreases of $<ix:nonFraction id="c116841486" contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember" unitRef="USD" name="ppih:DecreaseInOperatingLeaseLiabilityCurrent" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.4</ix:nonFraction>&#160;million, $<ix:nonFraction id="c116841487" contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember" unitRef="USD" name="ppih:DecreaseInOperatingLeaseLiabilityNoncurrent" scale="6" format="ixt:num-dot-decimal" decimals="-6">6.0</ix:nonFraction> million and $<ix:nonFraction id="c116841488" contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember" unitRef="USD" name="ppih:DecreaseInOperatingLeaseRightofuseAsset" scale="6" format="ixt:num-dot-decimal" decimals="-5">5.5</ix:nonFraction>&#160;million to operating lease liability short-term, operating lease liability long-term and operating lease right-of-use asset, respectively, in the consolidated balance sheets as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color:#ffffff;">.&#160;There were <em style="font: inherit;">no</em> other adjustments in connection with these terminations for the year ended <em style="font: inherit;"> January 31, 2024, </em>or during the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>.&#160;</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">At <em style="font: inherit;"> July 31, 2024</em>, the Company had total operating lease liabilities of <span style="background-color:#ffffff">$<ix:nonFraction id="c116841492" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="6" format="ixt:num-dot-decimal" decimals="-5">7.7</ix:nonFraction>&#160;</span>million&#160;and operating ROU assets of <span style="background-color:#ffffff">$<ix:nonFraction id="c116841493" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.9</ix:nonFraction></span><span style="background-color:#ffffff">&#160;million</span>, which are reflected in the consolidated balance sheets.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Finance Leases.&#160;</b></i>The Company has several lease agreements, with lease terms of <span style="-sec-ix-hidden:c116841494">one</span> to <span style="-sec-ix-hidden:c116841495">thirty</span>&#160;years, which consist of real estate, vehicles and office equipment leases. These leases do <em style="font: inherit;">not</em> require any contingent rental payments, impose any financial restrictions or contain any residual value guarantees.&#160; Certain of the Company&#8217;s leases include renewal options and escalation clauses; renewal options have <em style="font: inherit;">not</em> been included in the calculation of the lease liabilities and ROU&#160;assets as the Company is <em style="font: inherit;">not</em> reasonably certain to exercise the options.&#160; The Company does <em style="font: inherit;">not</em> have any arrangements where it acts as a lessor.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company also had finance lease liabilities of $<ix:nonFraction id="c116841500" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million included in current maturities of long-term debt and long-term debt less current maturities, and financial ROU assets of $<ix:nonFraction id="c116841501" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.3</ix:nonFraction>&#160;million which were included in property plant and equipment, net of accumulated depreciation in the consolidated balance sheets.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">16</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Supplemental balance sheet information related to leases is as follows:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" id="c2734980" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Operating and Finance leases</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance leases assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Property and Equipment - gross</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841532" contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-3">942</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841533" contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" format="ixt:num-dot-decimal" decimals="-4">970</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841534" contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">595</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841535" contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" format="ixt:num-dot-decimal" decimals="-3">536</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and Equipment - net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841536" contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">347</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841537" contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:num-dot-decimal" decimals="-3">434</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841539" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">32</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841540" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">113</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Finance lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841541" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">62</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841542" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841543" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">94</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841544" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">113</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating lease ROU assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841546" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,938</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841547" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,467</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841549" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">965</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841550" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">914</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841551" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,689</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841552" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:num-dot-decimal" decimals="-4">6,270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Total operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841553" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,654</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841554" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,184</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Total lease costs consist of the following:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:LeaseCostTableTextBlock" id="c2734981" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 18.8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Lease costs</b></p> </td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 33.2%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Consolidated Statements of Operations Classification</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finance Lease Costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Amortization of ROU assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841567" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">37</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841568" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">33</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841569" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">75</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841570" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAssetAmortization" scale="3" format="ixt:num-dot-decimal" decimals="-3">87</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Interest on lease liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Interest expense</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841572" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">2</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841573" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841574" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">3</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841575" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestExpense" scale="3" format="ixt:num-dot-decimal" decimals="-3">5</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Operating lease costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841577" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">438</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841578" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">426</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841579" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">893</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841580" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">882</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Short-term lease costs (1)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841582" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">93</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841583" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">59</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841584" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">236</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841585" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:ShortTermLeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">245</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Sub-lease income</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841587" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:SubleaseIncome" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841588" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:SubleaseIncome" scale="3" format="ixt:num-dot-decimal" decimals="-4">20</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841589" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:SubleaseIncome" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841590" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:SubleaseIncome" scale="3" format="ixt:num-dot-decimal" decimals="-4">40</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Total Lease costs</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841592" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-4">570</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841593" contextRef="d_2023-05-01_2023-07-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">501</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841594" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,207</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841595" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:LeaseCost" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,179</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">(<em style="font: inherit;">1</em>)&#160;Includes variable lease costs, which are <em style="font: inherit;">not</em> material.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">17</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;</ix:exclude>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Supplemental cash flow information related to leases is&#160;as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:SupplementalCashFlowInformationRelatedLeasesTableTextBlock" id="c2734982" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="7" rowspan="1" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Cash paid for amounts included in the measurement of lease liabilities:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Financing cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841603" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">16</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841604" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">154</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841606" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">3</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841607" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:FinanceLeaseInterestPaymentOnLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">5</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841609" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,045</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841610" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:OperatingLeasePayments" scale="3" format="ixt:num-dot-decimal" decimals="-4">890</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><b>ROU assets obtained in exchange for new lease obligations:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating leases liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841613" contextRef="d_2024-02-01_2024-07-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,041</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c116841614" contextRef="d_2023-02-01_2023-07-31" unitRef="USD" name="us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">3,484</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Weighted-average lease terms and discount rates are as follows:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" id="c2734983" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average remaining lease terms (in years):</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2024-07-31" name="us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1" id="c116841618" format="ixt-sec:duryear">2.8</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonNumeric contextRef="i_2024-07-31" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="c116841619" format="ixt-sec:duryear">12.7</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average discount rates:</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841621" contextRef="i_2024-07-31" unitRef="Pure" name="us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="3">6.4</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841622" contextRef="i_2024-07-31" unitRef="Pure" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" format="ixt:num-dot-decimal" decimals="3">10.4</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Maturities of lease liabilities&#160;as of <em style="font: inherit;"> July 31, 2024</em>, are&#160;as follows:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ppih:FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" id="c2734984" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Operating Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Finance Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the six months ending January 31, 2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841625" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,012</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841626" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" scale="3" format="ixt:num-dot-decimal" decimals="-3">16</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841627" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,993</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841628" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" format="ixt:num-dot-decimal" decimals="-3">33</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841629" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:num-dot-decimal" decimals="-4">1,980</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841630" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo" scale="3" format="ixt:num-dot-decimal" decimals="-3">36</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841631" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,963</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841632" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree" scale="3" format="ixt:num-dot-decimal" decimals="-3">9</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2029</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841633" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,617</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841634" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2030</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841635" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">612</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841636" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841637" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" scale="3" format="ixt:num-dot-decimal" decimals="-3">6,982</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841638" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive" scale="3" format="ixt:fixed-zero" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841639" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" scale="3" format="ixt:num-dot-decimal" decimals="-3">16,159</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841640" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityPaymentsDue" scale="3" format="ixt:num-dot-decimal" decimals="-3">94</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Less: amount representing interest</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c116841641" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:num-dot-decimal" decimals="-3">8,505</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841642" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount" scale="3" format="ixt:fixed-zero" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Total lease liabilities at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841643" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">7,654</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841644" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:FinanceLeaseLiability" scale="3" format="ixt:num-dot-decimal" decimals="-3">94</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Rent expense on operating leases, which is recorded on straight-line basis, was&#160;$<ix:nonFraction id="c116841508" contextRef="d_2024-05-01_2024-07-31" unitRef="USD" name="us-gaap:OperatingLeaseExpense" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.6</ix:nonFraction>&#160;<span style="background-color:#ffffff;">million</span><span style="background-color:#ffffff;">&#160;</span>for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;and <em style="font: inherit;">2023</em>, respectively.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:CashAndCashEquivalentsDisclosureTextBlock" id="c2734985" escape="true">
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><b>Note <em style="font: inherit;">12</em>&#160;- Restricted cash</b></p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <div style="font-size:10pt">
    <div style="font-family:Times New Roman">
      Restricted cash held by foreign subsidiaries is related to fixed deposits that also serve as security deposits and guarantees:&#160;
    </div>
    <div style="font-family:Times New Roman">
      &#160;
    </div>
    <div style="font-family:Times New Roman">
     <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" id="c2734986" escape="true">
      <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841649" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">9,455</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c116841650" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:num-dot-decimal" decimals="-3">5,845</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted cash</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841651" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:RestrictedCashAndCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,426</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c116841652" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:RestrictedCashAndCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">1,395</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash, cash equivalents and restricted cash shown in the statement of cash flows</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841653" contextRef="i_2024-07-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-3">10,881</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c116841654" contextRef="i_2024-01-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" format="ixt:num-dot-decimal" decimals="-4">7,240</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
     </ix:nonNumeric>
     <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
    </div>
   </div>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">18</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:FairValueDisclosuresTextBlock" id="c2734987" escape="true">
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><b>Note <em style="font: inherit;">13</em>&#160;- Fair value </b></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The carrying values of cash and cash equivalents, accounts receivable and accounts payable are considered reasonable estimates of fair value due to their short-term nature. The carrying amount of the Company's short-term debt, revolving lines of credit and long-term debt approximate fair value because&#160;the majority of the amounts outstanding accrue interest at variable market rates.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" id="c2734988" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">14</em>&#160;- Recent accounting pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">In <em style="font: inherit;"> November 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em> <em style="font: inherit;">2023</em>-<em style="font: inherit;">07,</em> <i>Segment Reporting</i> (<i>Topic <em style="font: inherit;">280</em></i>): <i>Improvements to Reportable Segment Disclosures</i>. The standard update requires additional disclosures, including further details about segment expenses regarding a public entity's reportable segments on an annual and interim basis. The additional segment disclosures are effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2023, </em>and interim periods within fiscal years beginning after <em style="font: inherit;"> December 15, 2024. </em>The Company is still evaluating the impact of these updated disclosure requirements on its statement of financial position or results of operations.</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">In <em style="font: inherit;"> December 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em> <em style="font: inherit;">2023</em>-<em style="font: inherit;">09,</em> <i>Income Taxes</i> (<i>Topic <em style="font: inherit;">740</em></i>): <i>Improvements to Income Tax Disclosures</i>. Pursuant to this standard update, companies are required to provide additional information which is&#160;primarily attributable to the rate reconciliation and income taxes paid. The new income tax disclosures are effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2024. </em>The Company is still evaluating&#160;this standard update&#160;but does <em style="font: inherit;">not</em> expect it to have a material impact on its statement of financial position or results of operations.</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:TreasuryStockTextBlock" id="c2734989" escape="true">
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><b>Note <em style="font: inherit;">15</em>&#160;- Treasury stock</b></p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The repurchase program approved on <em style="font: inherit;"> October 4, 2021 </em>authorized the Company to use up to&#160;$<ix:nonFraction id="c116841667" contextRef="i_2021-10-04" unitRef="USD" name="srt:StockRepurchaseProgramAuthorizedAmount1" scale="6" format="ixt:num-dot-decimal" decimals="-6">3.0</ix:nonFraction>&#160;million&#160;for the purchase of its outstanding shares of common stock. Stock&#160;repurchases were permitted to be executed through open market or privately negotiated transactions, depending upon&#160;current market conditions and other factors. On <em style="font: inherit;"> December 7, 2022 </em>the Board of Directors authorized the use of $<ix:nonFraction id="c116841668" contextRef="i_2022-12-07" unitRef="USD" name="srt:StockRepurchaseProgramAuthorizedAmount1" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction> million&#160;remaining under the share repurchase program previously approved on <em style="font: inherit;"> October 4, 2021 </em>that expired on <em style="font: inherit;"> October 3, 2022. </em>During the <em style="font: inherit;">twelve</em>&#160;months ended&#160;<em style="font: inherit;"> January 31, 2024</em>, the Company used the remaining $<ix:nonFraction id="c116841670" contextRef="i_2024-01-31" unitRef="USD" name="ppih:StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction> million authorized to repurchase its outstanding shares of common stock. Accordingly, t<span style="background-color:#ffffff;">here was <ix:nonFraction id="c116841671" contextRef="d_2024-05-01_2024-07-31" unitRef="Share" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> repurchase activity with respect to the Company's shares of common stock during the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>.</span></p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="us-gaap:MinorityInterestDisclosureTextBlock" id="c2734990" escape="true">
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">16</em>&#160;- Noncontrolling interest</b></p>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">On <em style="font: inherit;"> June 1, 2023, </em>the Company closed on its formation of a&#160;joint venture ("the JV", and the agreement governing the JV, "the JV Agreement")&#160;with Gulf Insulation Group ("GIG"), a leading provider of pre-insulated piping systems and pipe fabrication, in which the Company acquired a <ix:nonFraction id="c116841677" contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember" unitRef="Pure" name="us-gaap:MinorityInterestOwnershipPercentageByParent" scale="-2" format="ixt:num-dot-decimal" decimals="1">60</ix:nonFraction>% controlling financial interest and contributed assets consisting of a building and equipment.&#160;The JV is a limited liability company named Perma Pipe Gulf Arabia Industry and&#160;is a closed joint stock company established under the laws of the Kingdom of Saudi Arabia. The JV's&#160;capital is comprised of ordinary shares with <ix:nonFraction id="c116841678" contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember" unitRef="Pure" name="us-gaap:MinorityInterestOwnershipPercentageByParent" scale="-2" format="ixt:num-dot-decimal" decimals="1">60</ix:nonFraction>% owned by the Company and remaining <ix:nonFraction id="c116841679" contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember" unitRef="Pure" name="us-gaap:MinorityInterestOwnershipPercentageByParent" scale="-2" format="ixt:num-dot-decimal" decimals="1">40</ix:nonFraction>% owned by GIG. The Company expects this collaborative business arrangement to result in expanding its market presence in Saudi Arabia, Kuwait, and Bahrain. The primary business activities of the JV include the manufacture and sale of the pre-insulated piping systems and pipe coating services. GIG acquired its&#160;<ix:nonFraction id="c116841680" contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember" unitRef="Pure" name="us-gaap:MinorityInterestOwnershipPercentageByParent" scale="-2" format="ixt:num-dot-decimal" decimals="1">40</ix:nonFraction>% non-controlling interest by contributing assets to the JV&#160;of approximately $<ix:nonFraction id="c116841681" contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentFairValueDisclosure" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.8</ix:nonFraction>&#160;million in fair value, mainly consisting of an idle building and equipment. The fair value of the net assets contributed was determined through the use of a <em style="font: inherit;">third</em>-party appraiser using the indirect cost method.</p>
   <div style="font-size: 10pt; margin: 0pt;">
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Pursuant to the applicable guidance in ASC <em style="font: inherit;">805,</em> <i>Business Combinations and Noncontrolling Interests</i>, the Company determined that the transaction did <em style="font: inherit;">not</em> meet the necessary conditions to be considered a business as the set of assets acquired did <em style="font: inherit;">not</em> contain an organized workforce and therefore was recorded as an asset acquisition. The assets transferred by the Company to the JV were recorded at historical cost, and <em style="font: inherit;">no</em> gain was recognized as a result of this exchange due&#160;to the Company having&#160;a controlling interest in the JV. The Company&#8217;s measurement of the acquired assets is comprised of the fair value of the contributed net assets given up by the Company and the fair value of the non-controlling interest excluding the contributed assets. The non-controlling interest attributable to the other party was recorded as of the investment date and was measured as part of the carrying amount of the ownership interest in the net assets given up by the Company plus the fair value of the non-controlling interest excluding the contributed assets. <em style="font: inherit;">No</em> gain or loss was recognized as a result of this exchange. The Company also assumed a promissory note payable to GIG&#160;issued as part of the formation of the JV in the principal amount of $<ix:nonFraction id="c116841688" contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:NotesPayable" scale="6" format="ixt:num-dot-decimal" decimals="-5">2.8</ix:nonFraction>&#160;million. The principal amount is presented within the Long-term debt, less current maturities caption in the Company's consolidated balance sheets.&#160;The Company also has a promissory note due from the JV that was issued as part of the formation of the JV in the amount of approximately $<ix:nonFraction id="c116841689" contextRef="i_2023-06-01_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:NotesReceivableNet" scale="6" format="ixt:num-dot-decimal" decimals="-5">4.2</ix:nonFraction>&#160;million and&#160;eliminates in consolidation.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company has a <ix:nonFraction id="c116841690" contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember" unitRef="Pure" name="us-gaap:MinorityInterestOwnershipPercentageByParent" scale="-2" format="ixt:num-dot-decimal" decimals="1">60</ix:nonFraction>% controlling financial interest in the JV&#160;which is <em style="font: inherit;">not</em> considered a wholly owned subsidiary. Accordingly, there remains a minority portion of the equity interest that is owned by a <em style="font: inherit;">third</em> party, GIG. Pursuant to the applicable guidance contained in ASC <em style="font: inherit;">810,</em> <i>Consolidations</i>, the balance sheets&#160;and operating activities of this investment are&#160;included in the Company's consolidated financial statements. T<span style="background-color:#ffffff;">he carrying amount of the assets and liabilities of the JV that are consolidated by the Company totaled $<ix:nonFraction id="c116841694" contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:Assets" scale="6" format="ixt:num-dot-decimal" decimals="-5">26.4</ix:nonFraction>&#160;million&#160;and $<ix:nonFraction id="c116841695" contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember" unitRef="USD" name="us-gaap:Liabilities" scale="6" format="ixt:num-dot-decimal" decimals="-5">15.5</ix:nonFraction>&#160;million, respectively, as of&#160;<em style="font: inherit;"> July 31, 2024</em>.</span></p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company adjusts net income in the consolidated statements of operations to exclude the proportionate share of results that is attributable to the non-controlling interest. Additionally, the Company presents the proportionate share that is attributable to the redeemable non-controlling interest as temporary equity within the consolidated balance sheets. This mezzanine presentation is the result of the non-controlling interest being subject to a put option that is <em style="font: inherit;">not</em> solely within the Company's control and in connection with the equity shares of the business arrangement that is redeemable at any time after <em style="font: inherit;">five</em> years following the date of formation. The redemption amount per the JV Agreement is&#160;at fair value of the non-controlling interest which represents the fair value of ordinary shares of the JV that are&#160;owned by GIG. Further, neither the call option nor put option contained in the JV Agreement met the definition of a derivative as a result of <em style="font: inherit;">not</em> containing a net settlement provision and the shares <em style="font: inherit;">not</em> being readily convertible to cash, thereby being considered embedded with respect to non-controlling interest and <em style="font: inherit;">not</em> a freestanding instrument.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">As a result of the non-controlling interest being subject to redemption rights that are <em style="font: inherit;">not</em> entirely within the Company's control, it was concluded that the necessary conditions were met to be accounted for in accordance with ASC <em style="font: inherit;">480,</em> <i>Distinguishing Liabilities from Equity</i>. Pursuant to this accounting standard, the Company determined that the only criteria for the security&#160;to become redeemable is the passage of time and, therefore, is considered probable of redemption. The Company made a policy election to measure changes in the non-controlling interest immediately as they occur and adjust the carrying amount of non-controlling interest equal to its redemption amount as the non-controlling interest has <em style="font: inherit;">no</em> stated fixed price or fixed date. As such, at each subsequent balance sheet date following the formation of the JV,&#160;the Company must determine whether further adjustment is required&#160;to increase the carrying value of the redeemable non-controlling interest. If the Company determines that the fair value of the redeemable non-controlling interest exceeds its carrying value, an adjustment is made to reflect this change. However, if the value is determined to be less than its carrying value, such&#160;adjustment is limited to its original carrying value at the formation of the&#160;business arrangement. Additionally, adjustments made to reflect the change&#160;in the value of the redeemable non-controlling interest are offset&#160;against&#160;permanent&#160;equity within the Company's consolidated balance sheets.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Net income attributable to GIG was&#160;$<ix:nonFraction id="c116841704" contextRef="d_2024-05-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="6" format="ixt:num-dot-decimal" decimals="-6">1.0</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841705" contextRef="d_2023-05-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million for the <em style="font: inherit;">three</em>&#160;months ended&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;">2023</em>, respectively. Net income attributable to GIG was $<ix:nonFraction id="c116841708" contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.3</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841709" contextRef="d_2023-02-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.1</ix:nonFraction>&#160;million for the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;<em style="font: inherit;">2023</em>, respectively. The proportionate share of net income was accounted for as a reduction in deriving net income attributable to common stock in the Company's consolidated statements of operations.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company is the ultimate parent of the JV through its <em style="font: inherit;">60%</em> controlling financial interest and as part of the JV Agreement&#160;majority control of the operational activities of the JV and&#160;<em style="font: inherit;">no</em> joint control exists. The JV Agreement has <em style="font: inherit;">no</em> veto or kickout rights and board voting is proportional to the ownership interest. Certain activities do include a <em style="font: inherit;">two</em>-thirds majority affirmative vote of shareholders of the JV and include acquiring another company, establishing new subsidiaries, entering another partnership or joint venture, engaging in any merger or materially changing&#160;the business of the JV. These are considered protective rights. The <em style="font: inherit;">60%</em> equity ownership of the JV by the Company allows it to receive its proportionate share of losses and residual returns.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The non-controlling interest as measured at fair value was&#160;$<ix:nonFraction id="c116841717" contextRef="i_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">8.1</ix:nonFraction>&#160;million and $<ix:nonFraction id="c116841718" contextRef="i_2024-01-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount" scale="6" format="ixt:num-dot-decimal" decimals="-5">6.3</ix:nonFraction>&#160;million, and was&#160;recorded within temporary equity at&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively. The change in non-controlling interest consists of $<ix:nonFraction id="c116841719" contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NetIncomeLossAttributableToNoncontrollingInterest" scale="6" format="ixt:num-dot-decimal" decimals="-5">1.3</ix:nonFraction>&#160;million in current year net income attributable to non-controlling interest, and approximately $<ix:nonFraction id="c116841720" contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember" unitRef="USD" name="us-gaap:NoncontrollingInterestIncreaseFromBusinessCombination" scale="6" format="ixt:num-dot-decimal" decimals="-5">0.5</ix:nonFraction>&#160;million as an adjustment in the carrying value of the redeemable non-controlling interest pertaining to the business arrangement. In addition, there were <em style="font: inherit;">no</em> dividends or any other form of distributions from non-controlling interest for the period ended&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.&#160;</p>
   </div>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <ix:exclude>
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">19</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
      </div>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#160;&#160;</ix:exclude>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;">
   <tbody>
    <tr style="vertical-align: top; font-family: Times New Roman; font-size: 10pt;">
     <td style="width: 54pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><b><a id="mnda" href="#"></a>Item 2.</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><b>Management's Discussion and Analysis of Financial Condition and Results of Operations (</b>"<b>MD&amp;A</b>"<b>)</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The statements contained in this MD&amp;A and other information contained elsewhere in this quarterly report, which can be identified by the use of forward-looking terminology such as "may," "will," "expect," "continue," "remains," "intend," "aim," "should," "prospects," "could," "future," "potential," "believes," "plans," "likely" and "probable" or the negative thereof or other variations thereon or comparable terminology, constitute "forward-looking statements" within the meaning of Section 27A of the Securities Act of 1933, as amended, and Section 21E of the Securities Exchange Act of 1934, as amended, and are subject to the safe harbors created thereby. These statements should be considered as subject to the many risks and uncertainties that exist in the Company's operations and business environment. Such risks and uncertainties could cause actual results to differ materially from those projected as a result of many factors, including, but not limited to, those under the heading Item 1A. Risk Factors included in the Company's latest Annual Report on Form 10-K. The Company's fiscal year ends on January 31.&#160;Years and balances described as&#160;2024 and 2023&#160;are for the fiscal year&#160;ending January 31,&#160;2025&#160;and the fiscal year ended&#160;January 31, 2024, respectively.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">This MD&amp;A should be read in conjunction with the Company&#8217;s consolidated financial statements, including the notes thereto, contained elsewhere in this report. Percentages set forth below in this&#160;MD&amp;A have been rounded to the nearest percentage point.&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGFTR" style="width: 100%; text-align: center;">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-family: Times New Roman; font-size: 10pt;">
       20
     </div>
    </div>
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);"/>
   <div class="PGHDR" style="width: 100%; height: 20px; text-align: left;">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: center;"><b>&#160;CONSOLIDATED RESULTS OF OPERATIONS</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands, except per share data, or unless&#160;otherwise specified)</b></p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company is engaged in the manufacture and sale of products in one reportable segment. Since the Company focuses on discrete projects, operating results can be&#160;significantly impacted as a result of large variations in the level of project activity in reporting periods.</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 7pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;">
   <tbody>
    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Three Months Ended July 31,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);"><b>&#160;</b></td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Six Months Ended July 31,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);"><b>&#160;</b></td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2024</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2023</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Change favorable (unfavorable)</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2024</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2023</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Change favorable (unfavorable)</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Percent of Net Sales</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Percent of Net Sales</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Percent of Net Sales</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Percent of Net Sales</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Amount</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 7pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net sales</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">37,513</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">35,141</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">2,372</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">71,834</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">64,798</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">$</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">7,036</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Gross profit</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">13,474</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">36</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">9,464</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">27</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">4,010</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">23,991</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">33</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">16,239</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">25</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">7,752</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">General and administrative expenses</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">5,979</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">16</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">5,283</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">15</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(696</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">12,128</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">17</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">10,742</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">17</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(1,386</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Selling expense</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,353</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,490</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">137</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">2,588</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">2,730</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">142</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Interest expense</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">514</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">636</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">122</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,021</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,148</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">127</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Other (expense) income</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(38</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">81</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(119</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(105</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">154</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(259</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 7pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Income before income taxes</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">5,590</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">2,136</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">3,454</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">8,149</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">1,773</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">6,376</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Income tax expense</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,306</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">966</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(340</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">2,076</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,725</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(351</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 7pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss)</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">4,284</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">1,170</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">3,114</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">6,073</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">48</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">6,025</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; font-variant: normal; margin: 0pt;">Less: Net income attributable to non-controlling interest</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">995</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">148</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(847</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">1,341</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">148</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">(1,193</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt;">&#160;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 7pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss) attributable to common stock</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">3,289</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">1,022</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">2,267</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">4,732</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">(100</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">)</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
     <td style="width: 5%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">4,832</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 7pt; padding: 0; margin: 0">&#160;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGFTR" style="width: 100%; text-align: center;">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-family: Times New Roman; font-size: 10pt;">
       21
     </div>
    </div>
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);"/>
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
    <b>Three months ended&#160;July 31, 2024 </b>
    <b>vs. Three months ended&#160;July 31, 2023</b>
   </div>
  </div>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
    <i><b>Net sales:</b></i>
   </div>
  </div>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
     Net sales were $
    37.5 million and $
    35.1 million in the
    three months ended July 31, 2024 and 2023, respectively.&#160; The&#160;
    increase o
    <span style="background-color:#ffffff">f $2.4</span>
    <span style="background-color:#ffffff">&#160;million, or&#160;7%,&#160;</span>
    <span style="background-color:#ffffff">was</span>&#160;a result of increased sales volumes.&#160;
   </div>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b>Gross profit:</b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Gross profit was $13.5&#160;million, or&#160;36%&#160;of net sales, and $9.5&#160;million, or&#160;27%&#160;of net sales,&#160;in the three months ended July 31, 2024 and 2023, respectively. The&#160;increase&#160;of $4.0&#160;million, was&#160;primarily driven by increased&#160;sales volumes and better margins due to product mix.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b>General and administrative expenses:</b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">General and administrative expenses were&#160;$6.0 million and&#160;$5.3&#160;million in the three months ended July 31, 2024 and 2023, respectively. The&#160;increase of&#160;$0.7&#160;million, was due to&#160;higher payroll expenses&#160;and professional service fees in the quarter.&#160;&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Selling expenses:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    Selling expenses remained consistent and were&#160;$
   1.4&#160;million&#160;and&#160;$
   1.5&#160;million&#160;in the&#160;
   three months ended July 31, 2024 and 2023,&#160;respectively. &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
  </div>
  <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    &#160;
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Interest expense: </span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Net interest expense remained consistent and was $0.5 million and $0.6&#160;million in the three months ended July 31, 2024 and 2023, respectively.&#160;&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Other income:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Other income was consistent and less than $0.1&#160;million in<span style="background-color:#ffffff;">&#160;the </span>three months ended July 31, 2024 and 2023<span style="background-color:#ffffff;">, respectively.&#160;</span></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Income tax expense:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">The Company's ETR was&#160;23% and&#160;45% in the three months ended July 31, 2024 and 2023, respectively. The change in the ETR is due to the ability to recognize tax benefits on&#160;losses in the United States in the current year whereas the prior year had a full valuation allowance&#160;and changes in the mix of income and loss in various jurisdictions.&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">For further information, see Note 6&#160;- Income taxes, in the Notes to Consolidated Financial Statements.</span></p>
  <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="font-family: Times New Roman; margin: 0pt; font-size: 10pt; text-align: justify;"><i><strong><span style="background-color:#ffffff;">Net income&#160;attributable to common stock:</span></strong></i></p>
  <p style="font-family: Times New Roman; margin: 0pt; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"><span style="background-color:#ffffff;">Net income attributable to common stock was&#160;$3.3&#160;</span><span style="background-color:#ffffff;">million and $1.0</span><span style="background-color:#ffffff;">&#160;million&#160;in the </span>three months ended July 31, 2024 and 2023<span style="background-color:#ffffff;">, respectively.&#160;The&#160;</span>increase<span style="background-color:#ffffff;"> of&#160;$2.3</span><span style="background-color:#ffffff;">&#160;million was mainly due to increased sales activity and better margin performance&#160;in the quarter.&#160;</span></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGFTR" style="width: 100%; text-align: center;">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-family: Times New Roman; font-size: 10pt;">
       22
     </div>
    </div>
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);"/>
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
    <b>Six months ended&#160;July 31, 2024 </b>
    <b>vs.&#160;Six months ended&#160;July 31, 2023</b>
   </div>
  </div>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
    <i><b>Net sales:</b></i>
   </div>
  </div>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; text-align: justify;">
     Net sales were $
    71.8&#160;million and $
    64.8&#160;million in the
    six months ended July 31, 2024 and 2023, respectively.&#160; The&#160;
    increase o
    <span style="background-color:#ffffff">f $7.0</span>
    <span style="background-color:#ffffff">&#160;million, or 11%</span>
    <span style="background-color:#ffffff">, was</span>&#160;a result of increased sales volumes.
   </div>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b>Gross profit:</b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Gross profit was $24.0&#160;million, or&#160;33%&#160;of net sales, and $16.2&#160;million, or&#160;25%&#160;of net sales,&#160;in the six months ended July 31, 2024 and 2023, respectively. The&#160;increase&#160;of $7.8&#160;million, was&#160;primarily driven by increased&#160;sales volumes and better margins due to product mix.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b>General and administrative expenses:</b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">General and administrative expenses were&#160;$12.1&#160;million and&#160;$10.7&#160;million in the six months ended July 31, 2024 and 2023, respectively. The&#160;increase of&#160;$1.4&#160;million, was due to&#160;higher payroll expenses and professional service&#160;fees.&#160;&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Selling expenses:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    Selling expenses remained consistent and were $
   2.6&#160;million and $
   2.7&#160;million in the
   six months ended July 31, 2024 and 2023,&#160;respectively. &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;&#160;
  </div>
  <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    &#160;
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Interest expense: </span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Net interest expense remained consistent and was $1.0&#160;million and $1.1&#160;million&#160;in the six months ended July 31, 2024 and 2023, respectively.&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Other (expense) income:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Other (expense) income resulted in expense of $(0.1)&#160;million and income of $0.2&#160;million in the&#160;six months ended July 31, 2024 and 2023<span style="background-color:#ffffff">, respectively.&#160;The change was primarily due to exchange rate fluctuations in foreign currency transactions.&#160;</span><span style="background-color:#ffffff;">&#160;</span></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Income tax expense:</span></b></i></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">The Company's ETR&#160;was&#160;25%&#160;and&#160;97%&#160;in the&#160;six months ended July 31, 2024 and 2023, respectively. The change in the ETR is due to the ability to recognize tax benefits on losses in the United States in the current year whereas the prior year had a full valuation allowance&#160;and changes in the mix of income and loss in various jurisdictions.&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">For further information, see Note 6&#160;- Income taxes, in the Notes to Consolidated Financial Statements.</span></p>
  <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="font-family: Times New Roman; margin: 0pt; font-size: 10pt; text-align: justify;"><i><strong><span style="background-color:#ffffff;">Net income (loss) attributable to common stock:</span></strong></i></p>
  <p style="font-family: Times New Roman; margin: 0pt; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"><span style="background-color:#ffffff;">Net income (loss) attributable to common stock was $4.7&#160;</span><span style="background-color:#ffffff;">million and $(0.1)</span><span style="background-color:#ffffff;">&#160;million&#160;in the </span>six months ended July 31, 2024 and 2023<span style="background-color:#ffffff;">, respectively.&#160;The&#160;</span>increase<span style="background-color:#ffffff;"> of $4.8</span><span style="background-color:#ffffff;">&#160;million&#160;was mainly due to increased sales activity and better margin performance.&#160;</span></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGFTR" style="width: 100%; text-align: center;">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-family: Times New Roman; font-size: 10pt;">
       23
     </div>
    </div>
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);"/>
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; font-size: 10pt; text-align: justify;"><b><span style="background-color:#ffffff;">Liquidity and capital resources</span></b></p>
  <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; font-size: 10pt; text-align: justify;">Cash and cash equivalents as of&#160;July 31, 2024 were&#160;$9.5&#160;million compared to $5.8&#160;million on January 31, 2024. On July 31, 2024, $0.5&#160;million was held in the United States, and $9.0&#160;million was held at the Company's foreign subsidiaries.&#160;The Company's working capital was $44.3&#160;million on&#160;July 31, 2024 compared to $41.1&#160;million on&#160;January 31, 2024. Of the working capital components, accounts receivable&#160;decreased by $6.7&#160;million and cash and cash equivalents&#160;increased by $3.7 million as the result of the movements discussed below. As of July 31, 2024, the Company ha<span style="background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">d $4.7</span><span style="background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;million of borrowing capacity&#160;under the Renewed Senior Credit Facility in North America and $12.6</span><span style="background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;million of borrowing capacity under&#160;its foreign revolving credit agreements. The Company had $6.7</span><span style="background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;million borrowed&#160;under the Renewed Senior Credit Facility and $7.8</span><span style="background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;million borro</span>wed under its foreign revolving credit agreements at July 31, 2024.</p>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">Net cash from&#160;operating activities&#160;was $</span>3.8<span style="background-color:#ffffff;">&#160;million and&#160;$</span>3.5<span style="background-color:#ffffff;">&#160;million in the&#160;six months ended July 31, 2024 and 2023</span><span style="background-color:#ffffff;">, respectively.&#160;The&#160;</span>increase<span style="background-color:#ffffff;"> of $</span>0.3<span style="background-color:#ffffff;">&#160;million was&#160;primarily attributable to&#160;changes in accounts receivable&#160;and customer deposits, partially offset by changes&#160;to accounts payable&#160;and prepaids expenses and other current assets.&#160;</span></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">Net cash from investing activities in the&#160;</span>six months ended July 31, 2024 and 2023<span style="background-color:#ffffff;"> was $(</span>3.2<span style="background-color:#ffffff;">) million and $(</span>6.8<span style="background-color:#ffffff;">) million, respectively. The&#160;</span>decrease<span style="background-color:#ffffff;"> of $(</span>3.6<span style="background-color:#ffffff;">) million was due primarily to fewer capital expenditures&#160;in the United States&#160;and Canada.</span></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">Net cash from financing activities in the&#160;</span>six months ended July 31, 2024 and 2023<span style="background-color:#ffffff;"> was $</span>2.2<span style="background-color:#ffffff;">&#160;million and $</span>3.7<span style="background-color:#ffffff;"> million, respectively. The&#160;main source of cash from financing activities in&#160;the&#160;</span>six months ended July 31, 2024<span style="background-color:#ffffff;">, consisted of&#160;net proceeds from borrowings&#160;of approximately $2.7&#160;million under the Company's credit facilities, as compared to net proceeds of approximately $4.8 million in&#160;the </span>six months ended July 31, 2023<span style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">. </span></span><span style="background-color:#ffffff;">Debt totaled $</span>27.9<span style="background-color:#ffffff;"> million and $</span>25.7<span style="background-color:#ffffff;">&#160;million as of </span>July 31, 2024 and January 31, 2024<span style="background-color:#ffffff;">, respectively. See Note 10&#160;- Debt, in the Notes to Consolidated Financial Statements for further discussion relating to this topic.</span></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Treasury stock. </b></i>During the twelve&#160;months ended&#160;January 31, 2024, the Company used the remaining $1.0 million authorized to repurchase its outstanding shares of common stock. Accordingly, t<span style="background-color:#ffffff">here was no repurchase activity with respect to the Company's shares of common stock during the&#160;three and six months ended July 31, 2024.</span>&#160;See Note 15&#160;- Treasury stock, for further discussion relating to this topic.</p>
  <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family:Times New Roman">
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
      <i><b>Revolving lines -&#160;North America</b></i>
      <b>.&#160;</b>On September 20, 2018, the Company and certain of its U.S. and Canadian subsidiaries (collectively, together with the Company, the &#8220;North American Loan Parties&#8221;) entered into a Revolving Credit and Security Agreement (the &#8220;Credit Agreement&#8221;) with PNC Bank, National Association ("PNC"), as administrative agent and lender, providing for a three-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Senior Credit Facility&#8221;).
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
       On September 17, 2021,&#160;the North American Loan Parties&#160;executed an extension of the Credit Agreement&#160;with PNC, providing for a new five-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Renewed Senior Credit Facility&#8221;). The Company's&#160;obligations under the Renewed Senior Credit Facility are currently guaranteed by Perma-Pipe Canada, Inc. Each of the North American Loan Parties other than Perma-Pipe Canada, Inc. (collectively, the "Borrowers") is a borrower under the Renewed Senior Credit Facility.
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
       The Borrowers have used and will continue to use borrowings under the Renewed Senior Credit Facility (i)&#160;to fund future capital expenditures; (ii)&#160;to fund ongoing working capital needs; and (iii)&#160;for other corporate purposes, including potentially additional stock&#160;repurchases. Borrowings under the Renewed Senior Credit Facility bear&#160;interest at a rate equal to an alternate base rate, SOFR&#160;rate index, plus, in each case, an applicable margin. The applicable margin is based on a fixed charge coverage ratio ("FCCR") range. Interest on alternate base rate borrowings is the alternate base rate (as defined&#160;in the Renewed Senior Credit Facility) plus an applicable margin ranging from 1.00% to 1.50%, based on the FCCR in the most recently reported period. Interest on SOFR rate borrowings is the SOFR&#160;rate (as defined in the Renewed Senior Credit Facility) plus an applicable margin ranging from 2.00% to 2.50%, based on the FCCR in the most recently reported period, as well as an additional SOFR adjustment ranging from 0.10% to 0.25%, based on the term of the interest period. Additionally, the Borrowers pay a 0.25% per annum facility fee on the unused portion of the Renewed Senior Credit Facility.
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:'Times New Roman'">
      <div style="font-variant:normal">
        Subject to certain exceptions, borrowings under the Renewed Senior Credit Facility are secured by substantially all of the North American Loan Parties&#8217; assets. The Renewed Senior Credit Facility matures on September 20, 2026. Subject to certain qualifications and exceptions, the Renewed Senior Credit Facility contains covenants that, among other things, restrict the North American Loan Parties&#8217; ability to create liens, merge or consolidate, consummate acquisitions, make investments, dispose of assets, incur debt, and pay dividends and other distributions. In addition, the North American Loan Parties may not make&#160;capital expenditures in excess of $5.0 million annually, plus a limited carryover of unused amounts. Further, the North American Loan Parties may not make repurchases of the Company's common stock in excess of $3.0 million.
      </div>
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:&quot;Times New Roman&quot;">
      <div style="font-variant:normal">
        The Renewed Senior Credit Facility also contains financial covenants requiring&#160;the North American Loan Parties to achieve a ratio of its EBITDA (as defined in the Renewed Senior Credit Facility) to the sum of scheduled cash principal payments on indebtedness for borrowed money and interest payments on the advances under the Renewed Senior Credit Facility&#160;to be not less than 1.10 to 1.00 for any five consecutive days in which the undrawn availability is less than $3.0 million&#160;or any day in which the undrawn availability is less than $2.0 million. In order to cure any future breach of these covenants by the North American Loan Parties, the Company may repatriate cash from any of its foreign subsidiaries that are otherwise not a party to the Renewed Senior Credit Facility in an amount which, when added to the amount of the Company&#8217;s Consolidated EBITDA, would result in compliance on a pro forma basis. The Company was in compliance with respect to these covenants as of&#160;
       July 31, 2024.
      </div>
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:&quot;Times New Roman&quot;">
      <div style="font-variant:normal">
        The Renewed Senior Credit Facility contains customary events of default. If an event of default occurs and is continuing, then PNC may terminate all commitments to extend further credit and declare all amounts outstanding under the Renewed Senior Credit Facility due and payable immediately. In addition, if any of the North American Loan Parties or certain of their subsidiaries become the subject of voluntary or involuntary proceedings under any bankruptcy, insolvency or similar law, then any outstanding obligations under the Renewed Senior Credit Facility will automatically become immediately due and payable. Loans outstanding under the Renewed Senior Credit Facility will bear interest at a rate of 2.00% per annum in excess of the otherwise applicable rate (i) while a bankruptcy event of default exists or (ii) upon the lender's&#160;request, during the continuance of any other event of default.
      </div>
     </div>
    </div>
    <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
       As of
      July 31, 2024,&#160;the Company had borrowed an aggregate of
      <span style="background-color:#ffffff">$6.7</span>
      <span style="background-color:#ffffff">&#160;million at a rate of 10.0%</span>
      <span style="background-color:#ffffff">&#160;and had $4.7</span>
      <span style="background-color:#ffffff">&#160;million available under the Renewed Senior Credit Facility. As of January 31, 2024, the Company had borrowed an aggregate of $5.5&#160;million and had $4.0&#160;million available under the Renewed Senior Credit Facility.</span>
     </div>
    </div>
    <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   </div>
  </div>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman; margin: 0pt;">
       24
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left; margin: 0pt;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <div style="font-size:10pt">
   <div style="font-family:Times New Roman">
     &#160;
   </div>
   <div style="font-family:Times New Roman">
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
      <i><b><span style="background-color:#ffffff">Revolving lines -&#160;foreign</span></b></i>
      <b><span style="background-color:#ffffff">.</span></b>
      <span style="background-color:#ffffff"> The Company also has credit arrangements used by its Middle Eastern subsidiaries in the U.A.E.</span>
      <span style="background-color:#ffffff">,</span>
      <span style="background-color:#ffffff"> Egypt </span>
      <span style="background-color:#ffffff">and Saudi Arabia </span>
      <span style="background-color:#ffffff">as discussed further below.</span>
     </div>
    </div>
    <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
        <i>United Arab Emirates</i>
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
         The Company has&#160;a revolving line for
        8.0&#160;million U.A.E. Dirhams (approximately $
        2.2&#160;million at
        July 31, 2024) from a bank in the U.A.E. As of
        July 31, 2024&#160;the&#160;facility has&#160;an interest rate of approximately&#160;
        8.6%, and&#160;expired in July&#160;2024, however, the Company has started&#160;the process to renew&#160;and extend&#160;this credit arrangement and the credit facility has continued without interruption and penalty.&#160;The Company had borrowed an aggregate of
        <span style="background-color:#ffffff">$1.2</span>&#160;million&#160;
        as of July 31, 2024 and $0.2 million&#160;
        as of January 31, 2024, respectively, and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;
        July 31, 2024 and January 31, 2024, the Company had unused borrowing availability of approximately $1.0 million and $1.9 million, respectively.
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:&quot;Times New Roman&quot;">
         The Company has a revolving line for
        20.5&#160;million U.A.E. Dirhams (approximately $
        5.6&#160;million&#160;at
        July 31, 2024) from a bank in the U.A.E. As of
        July 31, 2024&#160;the&#160;facility has an interest rate of approximately&#160;
        8.7%. The facility expired in August 2024, however, the Company has started the process to renew and extend this credit arrangement and the credit facility has continued without interruption or penalty.&#160;The Company had borrowed an aggregate o
        <span style="background-color:#ffffff">f $1.0&#160;</span>million&#160;
        as of July 31, 2024 and $0.1 million&#160;
        as of January 31, 2024, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;
        July 31, 2024 and January 31, 2024, the Company had unused borrowing availability of approximately
        <span style="background-color:#ffffff">$1.2&#160;</span>million and
        <span style="background-color:#ffffff"> $1.0 </span>million, respectively.
       </div>
       <div style="font-family:&quot;Times New Roman&quot;">
         &#160;
       </div>
      </div>
     </div>
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
        <i>Egypt</i>
       </div>
      </div>
      <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div>
       <div>
        <div>
         <div>
          <div style="font-size:10pt">
           <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
            <div style="font-size:10pt">
             <div style="font-family:Times New Roman">
               In June 2021, and as renewed or amended subsequently thereafter, the Company's Egyptian subsidiary entered into a credit arrangement with a bank in Egypt for a revolving line of
              100.0&#160;million Egyptian Pounds (approximately
              <span style="background-color:#ffffff">$2.1</span>
              <span style="background-color:#ffffff">&#160;million</span> at
              July 31, 2024). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by certain assets (such as accounts receivable) of the Company's Egyptian subsidiary. Among other covenants, the credit arrangement established a maximum leverage ratio allowable and restricted the Company's Egyptian subsidiary's ability to undertake any additional debt.&#160;As of
              July 31, 2024, the&#160;facility has an interest rate of approximately
              <span style="background-color:#ffffff">&#160;20.8%</span>
              <span style="background-color:#ffffff">and&#160;expires&#160;in November 2024.&#160;As of&#160;July 31, 2024, the Company had substantially nothing outstanding with respect to this credit arrangement, and approximately $1.4 million outstanding at&#160;January 31, 2024, which is presented as a component of current&#160;</span>maturities of long-term debt in the Company's consolidated balance sheets. Further, as of&#160;
              July 31, 2024&#160;and&#160;
              January 31, 2024, the Company had unused borrowing capacity
              <span style="background-color:#ffffff">of $2.1 million&#160;and $3.2 m</span>illion,&#160;respectively.&#160;
             </div>
            </div>
           </div>
          </div>
         </div>
        </div>
       </div>
       <div>
         &#160;
       </div>
      </div>
      <div>
       <div>
        <div>
         <div style="font-size:10pt">
          <div style="font-family:Times New Roman">
            In December 2021, the Company entered into a credit arrangement for project financing with a bank in Egypt for 28.2&#160;million Egyptian Pounds. As this project has progressed and the Company has made collections, the facility has decreased to a current amount of&#160;
           2.1&#160;million Egyptian Pounds&#160;(approximatel
           <span style="background-color:#ffffff">y $0.1&#160;mi</span>llion at
           July 31, 2024). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by the contract for a project being financed by the Company's Egyptian subsidiary.
           <span style="background-color:#ffffff">The facility has an interest rate of approximately&#160;11.0%</span>
           <span style="background-color:#ffffff">&#160;and, as of</span>&#160;November 2022, is no longer available for borrowings by the Company. The facility will expire in connection with final customer balance collections and the completion of the project. The Company had approximately
           <span style="background-color:#ffffff"> $0.1&#160;</span>million outstanding&#160;
           as of July 31, 2024 and January 31, 2024, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets.
          </div>
         </div>
        </div>
       </div>
      </div>
     </div>
     <div style="font-family:Times New Roman">
       &#160;
     </div>
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
        <i>Saudi Arabia</i>
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
         In March 2022, the Company's Saudi Arabian subsidiary entered into a credit arrangement with a bank in Saudi Arabia for a revolving line of&#160;
        37.0&#160;million Saudi Riyals (approximately $
        9.9&#160;million at&#160;
        July 31, 2024). This credit arrangement is in the form of project financing at rates competitive in Saudi Arabia. The line is secured by certain assets (such as accounts receivable) of the Company's Saudi Arabian subsidiary. The&#160;facility was renewed in May 2024 with substantially the same terms and conditions and expires in May 2025. As of
        July 31, 2024, the facility has an interest rate of approximately&#160;
        9.7%.&#160;The Company had borrowed an aggregate o
        <span style="background-color:#ffffff">f $2.6&#160;million&#160;and $3.2&#160;million&#160;</span>
        as of July 31, 2024 and January 31, 2024, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. The unused borrowing availability attributable to this credit arrangement at&#160;
        July 31, 2024&#160;and&#160;
        January 31, 2024, was
        <span style="background-color:#ffffff">$6.3&#160;million and $6.1 </span>million, respectively.
       </div>
      </div>
      <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
     </div>
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
         These credit arrangements are in the form of overdraft facilities and project financing at rates competitive in the countries in which the Company operates. The lines are secured by certain equipment, certain assets (such as accounts receivable and inventory), and a guarantee by the Company. Some credit arrangement covenants require a minimum tangible net worth to be maintained, including maintaining certain levels of intercompany subordinated debt. In addition, some of the revolving credit facilities restrict payment of dividends or undertaking of additional debt. The Company guarantees only a portion of the subsidiaries' debt, including foreign debt. The amount of foreign subsidiary debt guaranteed by the Company was approxim
        <span style="background-color:#ffffff">ately $1.1&#160;million and $0.1 million at&#160;July 31, 2024 and&#160;January 31, 2024, respectively.&#160;</span>
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
         The Company was in compliance with the covenants under the credit arrangements in the U.A.E., Egypt and Saudi Arabia as of
        July 31, 2024,
        <span style="background-color:#ffffff">with the exception of those arrangements that have expired or are set to expire and have not yet been renewed.&#160;Although certain of the arrangements have expired and the borrowings could be required to be repaid immediately by the banks, the Company is in regular communication with&#160;the respective banks throughout the renewal process and all of the&#160;arrangements have continued without interruption or penalty. </span>On
        July 31, 2024, interest rates were based on (i) the Emirates Inter Bank Offered Rate&#160;plus 3.0% to 3.5% per annum for the U.A.E. credit arrangements, two&#160;of which have&#160;a minimum interest rate of 4.5% per annum; (ii)&#160;either the Central Bank of Egypt corporate loan rate plus 1.5% to 3.5% per annum or the stated interest rate in the agreements for the Egypt credit arrangements;&#160;and (iii) the Saudi Inter-Bank Offered Rate plus 3.5% for the Saudi Arabia credit arrangement. Based on these base rates, as of
        July 31, 2024, the Company's interest rates ranged from&#160;
        8.6% to
        20.8%, with a weighted average rate of
        11.5%, and the Company had facility limits totaling
        <span style="background-color:#ffffff">$24.7</span>
        <span style="background-color:#ffffff">&#160;million</span> under these credit arrangements.
        <span style="background-color:#ffffff; font-family:Times New Roman; font-size:10pt">As of </span>
        July 31, 2024
        <span style="font-family:&quot;Times New Roman&quot;; font-size:10pt">,&#160;</span>
        <span style="font-family:&quot;Times New Roman&quot;; font-size:10pt"><span style="background-color:#ffffff">$7.1</span><span style="background-color:#ffffff">&#160;million</span></span>
        <span style="font-family:&quot;Times New Roman&quot;; font-size:10pt"> o</span>
        <span style="background-color:#ffffff; font-family:Times New Roman; font-size:10pt">f availability was used to support letters of credit to guarantee amounts committed for inventory purchases and for performance guarantees. Additionally, as of </span>
        July 31, 2024
        <span style="background-color:#ffffff; font-family:Times New Roman; font-size:10pt">, the Company had borrow</span>
        <span style="font-family:&quot;Times New Roman&quot;; font-size:10pt">ed </span>
        <span style="font-family:&quot;Times New Roman&quot;; font-size:10pt"><span style="background-color:#ffffff">$7.8</span><span style="background-color:#ffffff">&#160;million</span>&#160;and had an additional <span style="background-color:#ffffff">$12.6</span><span style="background-color:#ffffff">&#160;million</span> of </span>borrowing remaining available under the foreign revolving credit arrangements. The foreign revolving lines balances were included as a component of current maturities of long-term debt in the Company's consolidated balance sheets&#160;
        as of July 31, 2024 and January 31, 2024.
       </div>
      </div>
      <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
     </div>
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
         In June 2023, the Company&#160;assumed a promissory note of approximately $2.8&#160;million in connection with the formation of the joint venture with Gulf Insulation Group
        <span style="background-color:#ffffff"> (see Note 16). I</span>n&#160;accordance with the promissory note, all principal is due and payable on the maturity date of April 9, 2026, with the option to prepay, in whole or in part, at any time prior to the maturity date, without premium or penalty.
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
        <i><b>Mortgages. </b></i>On July&#160;28, 2016, the Company entered into a mortgage agreement&#160;secured by the Company's manufacturing facility located in Alberta, Canada&#160;that matures on December&#160;23, 2042. As of
        July 31, 2024, the remaining balance on the mortgage in Canada is approximately CAD
        5.9&#160;million (approximately $
        4.3&#160;million at
        July 31, 2024).&#160;The interest rate is variable,&#160;and&#160;was
        8.8%
        <span style="background-color:#ffffff">&#160;</span>at
        July 31, 2024. The principal balance is included as a component of long-term debt, less current maturities in the Company's consolidated balance sheets and is presented net of issuance costs of $0.1&#160;million&#160;
        as of July 31, 2024 and January 31, 2024, respectively.
       </div>
      </div>
      <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
     </div>
     <div style="font-family:Times New Roman">
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
        <i><b><span style="background-color:#ffffff">Finance obligation&#160;- buildings and land. </span></b></i>
        <span style="background-color:#ffffff">On April 14, 2021, the Company entered into a purchase and sale agreement (the "Purchase and Sale Agreement"). Pursuant to the terms of the Purchase and Sale Agreement, the Company sold its land and buildings in Lebanon, Tennessee (the "Property") for $10.4 million. The transaction generated net cash proceeds of $9.1&#160;million. Concurrently with the sale, the Company paid off the approximately $0.9 million&#160;mortgage note on the Property to its lender.&#160; The&#160;Company used the remaining proceeds to repay its borrowings under the Senior Credit Facility, for&#160;strategic investments, and for general corporate needs. Concurrent with the sale of the Property, the Company entered into a&#160;fifteen-year lease agreement (the &#8220;Lease Agreement&#8221;), whereby the Company leases back the Property at an annual rental rate of&#160;approximately $0.8 million, subject to annual rent increases of&#160;2.0%. Under the Lease Agreement, the Company has&#160;four consecutive options to extend the term of the lease by&#160;five years for each such option. &#160;</span>
       </div>
      </div>
      <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
      <div style="font-size:10pt">
       <div style="font-family:Times New Roman">
        <span style="background-color:#ffffff">In accordance with ASC&#160;842, <i>Leases</i>, this transaction was recorded as a failed sale and leaseback as the present value of lease payments exceeded&#160;substantially the&#160;fair value of the underlying assets. The Company utilized an incremental borrowing rate of 8.0% to determine&#160;the finance obligation&#160;to record for the amounts received&#160;and will continue to depreciate the assets.&#160;The current portion of the finance obligation of $0.2&#160;million is recognized in current maturities of long-term debt and the long-term portion of $8.9&#160;million is recognized&#160;in&#160;long-term finance obligation&#160;on the Company's consolidated balance sheets as of July 31, 2024</span>
        <span style="background-color:#ffffff">.&#160;The net carrying amount of the financial liability and remaining assets will be zero at the end of the lease term.</span>
       </div>
      </div>
      <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
     </div>
    </div>
   </div>
   <div style="font-family:Times New Roman">
    <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   </div>
  </div>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       25
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"><i><b>Accounts receivable:&#160;</b></i></p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">&#160;</p>
  <div style="font-size:10pt">
   <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
     In 2015, the Company completed a project in the Middle East with billings in the aggregate amount of approximately $41.9 million. The system has not yet been commissioned by the customer. Nevertheless, the Company has received&#160;approximately $
    40.1&#160;million&#160;as of
    July 31, 2024, with a remaining balance due in the amount of $
    1.8 million, all of which pertains to retention clauses within the agreements with&#160;the Company's customer, and which become payable by the customer when this project is fully tested and commissioned. Of this amount, $
    1.3 million&#160;is&#160;classified in other
    <span style="background-color:#ffffff">&#160;long-term assets on the Company's consolidated balance sheets.</span>
   </div>
   <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
     &#160;
   </div>
   <div style="font-family:&quot;Times New Roman&quot;, Times, serif">
     The Company has been actively involved&#160;in ongoing efforts to collect this&#160;outstanding balance. The Company continues to engage with the customer to ensure full payment of the open balances, and during the&#160;
    six months ended July 31, 2024, and at various times throughout 2023, the Company received&#160;partial payments to settle $
    0.3&#160;million and $
    0.6&#160;million, respectively, of the customer's outstanding balances. Further, the Company has been engaged by the customer to perform additional work in 2024 under customary trade terms that supports the continued cooperation between the Company and the customer. As a result, the Company did not reserve any allowance against the remaining outstanding balances as of&#160;
    July 31, 2024. However, if the Company's efforts to collect on this account are not successful, the Company may recognize an allowance for all, or substantially all, of any such then uncollected amounts.
   </div>
  </div>
  <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><b>CRITICAL ACCOUNTING POLICIES AND ESTIMATES</b></p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">Critical accounting policies are described in Item 7. MD&amp;A and in the Notes to the Consolidated Financial Statements&#160;for the year ended&#160;January 31, 2024 contained in the Company's latest Annual Report on Form 10-K. Any new accounting policies or updates to existing accounting policies as a result of new accounting pronouncements have been discussed in the Notes to Consolidated Financial Statements in this Quarterly Report on Form 10-Q. The application of critical accounting policies may require management to make assumptions, judgments and estimates about the amounts reflected in the Consolidated Financial Statements. Management uses historical experience and all available information to make these estimates and judgments, and different amounts could be reported using different assumptions and estimates.</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       26
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="item4" href="#"></a>Item 4.</b></p> </td>
     <td style="vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Controls and Procedures</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Evaluation of Disclosure Controls and Procedures</b></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Chief Executive Officer and Chief Financial Officer have evaluated the effectiveness of the Company's disclosure controls and procedures (as defined in Rule&#160;13a-15(e) and 15d-15(e) under the Securities Exchange Act of 1934, as amended)&#160;as of July 31, 2024.&#160;This evaluation included consideration of the controls, processes and procedures that are designed to ensure that information required&#160;to be disclosed by the Company in the reports the Company files or submits under the Exchange Act is recorded, processed, summarized and reported within the time&#160;periods specified in the SEC&#8217;s rules and forms, and to provide reasonable assurance that such information is accumulated and communicated to the Company&#8217;s&#160;management, including its Chief Executive Officer and Chief Financial Officer, as appropriate to allow timely decisions regarding required disclosure. Based on this evaluation, the Chief Executive Officer and Chief Financial Officer&#160;have concluded that, as of the end of&#160;the period covered by this Quarterly Report on Form 10-Q, our disclosure controls and procedures were not effective because of the material weaknesses in internal control over financial reporting, as described below.&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Material Weaknesses in Internal Control Over Financial Reporting</b></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As previously reported, we have material weaknesses&#160;in the Company's internal control over information technology general controls ("ITGC"), financial reporting relating to the review and approval of manual journal entries, timely review of the financial close process, and timely review of certain financial policies and procedures and respective HR policies. The Company also did not maintain effective controls at certain operating locations in the Middle East and North Africa ("MENA"), specifically the Company did not maintain sufficient documentation to support an evaluation that controls over business processes were operating effectively.&#160;These deficiencies&#160;led management to conclude that a material weakness existed with respect to the Company's internal control over financial reporting. The material weakness did not result in any material misstatements to the Company&#8217;s consolidated financial statements. As a result of these material weaknesses, there is a reasonable possibility that a material misstatement of the Company's annual or interim financial statements will not be prevented or detected on a timely basis.&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">A material weakness is a deficiency, or a combination of deficiencies, in internal control over financial reporting, such that there is a reasonable possibility that a material misstatement of the Company's annual or interim financial statements will not be prevented or detected on a timely basis.&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Remediation&#160;</b></i><i><b>Plan for the Material Weaknesses in Internal Control over Financial Reporting</b></i></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">To address these matters, the Company has begun implementing its remediation plan. Our ongoing remediation plans include the following:</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(i) addressing the identified issues with control owners, including Company leadership and IT personnel; (ii) engaging&#160;outside consultants with expertise relating to ITGCs to document processes,&#160;assist in addressing the design and operating business process controls, monitoring and testing reviews focusing on systems supporting our financial reporting process&#160;(iii) developing and maintaining documentation underlying ITGCs for knowledge transfer and function changes, including access control and change management; and (iv) outsourcing&#160;certain functions to third-party providers, specifically relating to servers and firewalls, and managed detection and response.</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Our remediation plans related to entity level controls and business process controls over MENA locations include: (i) addressing issues with control owners, including company leadership; (ii) evaluating and updating the Company's evidence of internal control policies and procedures as needed and providing necessary guidance to applicable&#160;locations; (iii) assessing the adequacy and determine whether enhancements are needed to the design of corporate and / or operating locations business process controls; and (iv) augmenting our internal audit function by hiring an additional resource to assist in overseeing the remediation process, including updating policies and procedures, and implementing internal controls; and (v) engaging&#160;outside consultants to conduct training sessions.&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company anticipates the actions described above and resulting improvements in controls will strengthen the Company's processes, procedures and will address the related material weaknesses described above. However, the material weaknesses cannot be considered fully remediated until the necessary controls have been appropriately designed and implemented. The remediation processes and procedures will also need to be in operation for a period of time and management&#160;conclude&#160;through testing, that these controls are operating effectively. Accordingly, the material weaknesses are not remediated as of July 31, 2024.&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
  <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"><i><b>Change in Internal Control over Financial Reporting</b></i>.&#160;There were no changes to our internal control over financial reporting which were identified in connection with the evaluation required by Rules 13a-15(d) or 15d-15(d) under the Exchange Act during the fiscal quarter ended&#160;July 31, 2024,&#160;that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       27
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div>
    &#160;
  </div>
  <ix:nonNumeric contextRef="d_2024-02-01_2024-07-31" name="ecd:MtrlTermsOfTrdArrTextBlock" id="c2734991" escape="true">
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="partii" href="#"></a>PART II <span style="-sec-ix-hidden:c116841723"><span style="-sec-ix-hidden:c116841724"><span style="-sec-ix-hidden:c116841725"><span style="-sec-ix-hidden:c116841726">OTHER</span></span></span></span> INFORMATION</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  </ix:nonNumeric>
  <div>
    &#160;
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">
   <tbody>
    <tr style="vertical-align: top;">
     <td style="width: 54pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="item6" href="#"></a>Item 6. </b></p> </td>
     <td style="vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Exhibits</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: justify; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 8%; vertical-align: top;">3.1</td>
     <td style="width: 92%; vertical-align: top;">Certificate of Incorporation of Perma-Pipe International Holdings, Inc. [Incorporated by reference to Exhibit 3.3 to Registration Statement No. 33-70298]</td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;">3.2</td>
     <td style="width: 92%; vertical-align: top;"><a href="http://www.sec.gov/Archives/edgar/data/914122/000091412217000008/a8knamechange.htm" style="-sec-extract:exhibit;">Certificate of Amendment to Certificate of Incorporation of Perma-Pipe International Holdings, Inc. [Incorporated by reference to Exhibit 3.1 to the Company's Current Report on Form 8-K filed on March 20, 2017]</a></td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;">3.3</td>
     <td style="width: 92%; vertical-align: top;"><a href="http://www.sec.gov/Archives/edgar/data/914122/000143774919008795/ppih20190503_8k.htm" style="-sec-extract:exhibit;">Fifth Amended and Restated By-Laws of Perma-Pipe International Holdings, Inc. [Incorporated by reference to Exhibit 3.2 to the Company's Current Report on Form 8-K filed on May 6, 2019]</a></td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;">10.1</td>
     <td style="width: 92%; vertical-align: top;"><a href="http://www.sec.gov/ix?doc=/Archives/edgar/data/914122/000143774924020983/ppih20240401_def14a.htm" style="-sec-extract:exhibit;">Perma-Pipe International Holdings, Inc. 2024 Omnibus Stock Incentive Plan [Incorporated by reference to Appendix A to the Company's Definitive Proxy Statement on Schedule 14A filed on June 21, 2024]*</a></td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">31.1</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt 0pt 0pt 36pt; text-indent: -36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><a href="ex_692416.htm" style="-sec-extract:exhibit;">Rule 13a - 14(a)/15d - 14(a) Certifications</a></p> <p style="margin: 0pt 0pt 0pt 36pt; text-indent: -36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><a href="ex_692416.htm" style="-sec-extract:exhibit;">(1) Chief Executive Officer certification pursuant to Section 302 of the Sarbanes-Oxley Act of 2002</a></p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">31.2</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt 0pt 0pt 36pt; text-indent: -36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><a href="ex_692417.htm" style="-sec-extract:exhibit;">Rule 13a - 14(a)/15d - 14(a) Certifications</a></p> <p style="margin: 0pt 0pt 0pt 36pt; text-indent: -36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><a href="ex_692417.htm" style="-sec-extract:exhibit;">(2) Chief Financial Officer certification pursuant to Section 302 of the Sarbanes-Oxley Act of 2002</a></p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">32</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: justify;"><a href="ex_692418.htm" style="-sec-extract:exhibit;">Section 1350 Certifications (Chief Executive Officer and Chief Financial Officer certification pursuant to Section 906 of the Sarbanes-Oxley Act of 2002)</a></p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.INS</p> </td>
     <td style="width: 92%; vertical-align: top; text-align: justify;">Inline XBRL Instance Document (the Instance Document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document)</td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.SCH</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Schema</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.CAL</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Calculation</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.DEF</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Definition</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.LAB</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Labels</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.PRE</p> </td>
     <td style="width: 92%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Presentation&#160; &#160; &#160; &#160; &#160;</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;">104</td>
     <td style="width: 92%; vertical-align: top;">Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">*Management contracts and compensatory plans or agreements</p>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       28
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000"/>
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="signatures" href="#"></a>SIGNATURES</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 8%; vertical-align: middle;">&#160;</td>
     <td style="width: 42%; vertical-align: middle;">&#160;</td>
     <td style="width: 50%; vertical-align: middle;"><b>Perma-Pipe International Holdings, Inc.</b></td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: middle;">&#160;</td>
     <td style="width: 42%; vertical-align: middle;">&#160;</td>
     <td style="width: 50%; vertical-align: middle;">&#160;</td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: middle;">&#160;</td>
     <td style="width: 42%; vertical-align: middle;">&#160;</td>
     <td style="width: 50%; vertical-align: middle;">&#160;</td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date:</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">September 11, 2024</span></p> </td>
     <td style="width: 50%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">By: /s/ David J. Mansfield</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: none;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">David J. Mansfield</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">President and Chief Executive Officer</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Executive Officer)</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date:</p> </td>
     <td style="width: 42%; vertical-align: bottom;"><span style="background-color:#ffffff;">September 11, 2024</span></td>
     <td style="width: 50%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">By: /s/ Matthew E. Lewicki</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: none;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Matthew E. Lewicki</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Vice President and Chief Financial Officer</p> </td>
    </tr>

    <tr>
     <td style="width: 8%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 42%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p> </td>
     <td style="width: 50%; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Financial and Accounting Officer)</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <div class="LAST-PAGE-BREAK">
   <div class="PGFTR">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-family: Times New Roman; font-size: 10pt;">
       29
     </div>
    </div>
   </div>
  </div>
 </body>
</html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>2
<FILENAME>ex_692416.htm
<DESCRIPTION>EXHIBIT 31.1
<TEXT>
<html><head>
	<title>ex_692416.htm</title>
	<!-- Generated by ThunderDome Portal - 9/7/2024 3:16:32 AM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10px; margin-left: 10px; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Exhibit 31.1</b></font></p>

<p style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</font></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">I, David J. Mansfield, certify that:</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">I have reviewed this quarterly report on Form 10-Q of Perma-Pipe International Holdings, Inc.;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">2.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">a.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">b.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">c.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">d.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant's fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">5.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">a.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">b.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date:</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">September 11, 2024</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><u>/s/ David J. Mansfield</u></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">David J. Mansfield</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">President and Chief Executive Officer</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Executive Officer)</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>3
<FILENAME>ex_692417.htm
<DESCRIPTION>EXHIBIT 31.2
<TEXT>
<html><head>
	<title>ex_692417.htm</title>
	<!-- Generated by ThunderDome Portal - 9/7/2024 3:01:52 AM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10px; margin-left: 10px; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Exhibit 31.2</b></font></p>

<p style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</font></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">I, Matthew E. Lewicki, certify that:</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">I have reviewed this quarterly report on Form 10-Q of Perma-Pipe International Holdings, Inc.;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">2.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">a.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">b.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">c.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">&nbsp;</td>
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">d.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant's fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 36pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">5.</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">

		<tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="width: 36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="width: 36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">a.</p>
			</td>
			<td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">

		<tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="width: 36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</td>
			<td style="width: 36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">b.</p>
			</td>
			<td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">

		<tr style="vertical-align: top; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<td style="width: 36pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date:</p>
			</td>
			<td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">September 11, 2024</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><u>/s/ Matthew E. Lewicki</u></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Matthew E. Lewicki</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Vice President and Chief Financial Officer</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Financial and Accounting Officer)</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32
<SEQUENCE>4
<FILENAME>ex_692418.htm
<DESCRIPTION>EXHIBIT 32
<TEXT>
<html><head>
	<title>ex_692418.htm</title>
	<!-- Generated by ThunderDome Portal - 9/7/2024 3:08:04 AM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10px; margin-left: 10px; cursor: auto;">
<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Exhibit 32</b></font></p>

<p style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt;"><font style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</font></p>

<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Certification of Principal Executive Officers</b></p>

<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Pursuant to 18 U.S.C. 1350</b></p>

<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Section 906 of the Sarbanes-Oxley Act of 2002)</b></p>

<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The undersigned, in their capacities as Chief Executive Officer and Chief Financial Officer of Perma-Pipe International Holdings, Inc. (the &#8220;Registrant")&nbsp;certify that, to the best of their knowledge, based upon a review of the Quarterly Report on Form 10-Q for the period ended&nbsp;<a data-tblloc="20x1" data-tblname="29850" data-tblv="42" id="led29850F20208301601501110715">July 31, 2024</a>&nbsp;of the Registrant, (the &#8220;Report&#8221;):</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 18pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(1)</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Report fully complies with the requirements of Section 13(a) or 15(d)&nbsp;of the Securities Exchange Act of 1934, as amended; and</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px;">

		<tr style="vertical-align: top;">
			<td style="width: 18pt;">&nbsp;</td>
			<td style="width: 18pt;">
			<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(2)</p>
			</td>
			<td>
			<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The information contained in the Report fairly presents, in all material respects, the financial condition and results of operations of the Registrant.</p>
			</td>
		</tr>

</table>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><u>/s/ David J. Mansfield</u></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">David J. Mansfield</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">President and Chief Executive Officer</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Executive Officer)</p>

<p style="margin: 0pt; text-align: left; text-indent: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><u>/s/ Matthew E. Lewicki</u></p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Matthew E. Lewicki</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Vice President and Chief Financial Officer</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Financial and Accounting Officer)</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">September 11, 2024</p>

<p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">A signed original of this written statement required by Section 906 has been provided by Perma-Pipe International Holdings, Inc. and will be retained by Perma-Pipe International Holdings, Inc. and furnished to the Securities and Exchange Commission or its staff upon request.</p>

<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>
</div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>5
<FILENAME>ppih-20240731.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 08:56PM UTC 2024-09-10--><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2024" xmlns:currency="http://xbrl.sec.gov/currency/2024" xmlns:dei="http://xbrl.sec.gov/dei/2024" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21" xmlns:ecd="http://xbrl.sec.gov/ecd/2024" xmlns:enum2="http://xbrl.org/2020/extensible-enumerations-2.0" xmlns:exch="http://xbrl.sec.gov/exch/2024" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2024" xmlns:ppih="http://investors.permapipe.com/20240731" xmlns:sic="http://xbrl.sec.gov/sic/2024" xmlns:srt="http://fasb.org/srt/2024" xmlns:srt-types="http://fasb.org/srt-types/2024" xmlns:stpr="http://xbrl.sec.gov/stpr/2024" xmlns:us-gaap="http://fasb.org/us-gaap/2024" xmlns:us-types="http://fasb.org/us-types/2024" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://investors.permapipe.com/20240731">
  <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/country/2024" schemaLocation="https://xbrl.sec.gov/country/2024/country-2024.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/naics/2024" schemaLocation="https://xbrl.sec.gov/naics/2024/naics-2024.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/exch/2024" schemaLocation="https://xbrl.sec.gov/exch/2024/exch-2024.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/dei/2024" schemaLocation="https://xbrl.sec.gov/dei/2024/dei-2024.xsd"/>
  <xsd:import namespace="http://fasb.org/srt/2024" schemaLocation="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/currency/2024" schemaLocation="https://xbrl.sec.gov/currency/2024/currency-2024.xsd"/>
  <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/stpr/2024" schemaLocation="https://xbrl.sec.gov/stpr/2024/stpr-2024.xsd"/>
  <xsd:import namespace="http://fasb.org/srt-types/2024" schemaLocation="https://xbrl.fasb.org/srt/2024/elts/srt-types-2024.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/2020-01-21" schemaLocation="https://www.xbrl.org/dtr/type/2020-01-21/types.xsd"/>
  <xsd:import namespace="http://xbrl.org/2020/extensible-enumerations-2.0" schemaLocation="https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/sic/2024" schemaLocation="https://xbrl.sec.gov/sic/2024/sic-2024.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/ecd/2024" schemaLocation="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd"/>
  <xsd:import namespace="http://fasb.org/us-types/2024" schemaLocation="https://xbrl.fasb.org/us-gaap/2024/elts/us-types-2024.xsd"/>
  <xsd:import namespace="http://fasb.org/us-gaap/2024" schemaLocation="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/>
  <xsd:annotation>
    <xsd:appinfo>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20240731_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20240731_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20240731_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="ppih-20240731_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="statement-document-and-entity-information" roleURI="http://investors.permapipe.com/20240731/role/statement-document-and-entity-information">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">000 - Document - Document And Entity Information</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-operations-unaudited" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">001 - Statement - Consolidated Statements of Operations (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-comprehensive-income-loss-unaudited" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">002 - Statement - Consolidated Statements of Comprehensive Income (Loss) (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">003 - Statement - Consolidated Balance Sheets (Current Period Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">004 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-stockholders-equity-unaudited" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">005 - Statement - Consolidated Statements of Stockholders' Equity (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-cash-flows-unaudited" roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">006 - Statement - Consolidated Statements of Cash Flows (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-1-basis-of-presentation" roleURI="http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">007 - Disclosure - Note 1 - Basis of Presentation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-business-segment-reporting" roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">008 - Disclosure - Note 2 - Business Segment Reporting</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-accounts-receivable" roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">009 - Disclosure - Note 3 - Accounts Receivable</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-revenue-recognition" roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">010 - Disclosure - Note 4 - Revenue Recognition</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-inventories" roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">011 - Disclosure - Note 5 - Inventories</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-income-taxes" roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">012 - Disclosure - Note 6 - Income Taxes</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-impairment-of-longlived-assets" roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">013 - Disclosure - Note 7 - Impairment of Long-lived Assets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">014 - Disclosure - Note 8 - Stock-based Compensation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-earnings-per-share" roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">015 - Disclosure - Note 9 - Earnings Per Share</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-debt" roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">016 - Disclosure - Note 10 - Debt</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">017 - Disclosure - Note 11 - Leases</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-restricted-cash" roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">018 - Disclosure - Note 12 - Restricted Cash</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-13-fair-value-" roleURI="http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">019 - Disclosure - Note 13 - Fair Value</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-14-recent-accounting-pronouncements-" roleURI="http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">020 - Disclosure - Note 14 - Recent Accounting Pronouncements</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-treasury-stock" roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">021 - Disclosure - Note 15 - Treasury Stock</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-noncontrolling-interest" roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">022 - Disclosure - Note 16 - Noncontrolling Interest</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-significant-accounting-policies-policies" roleURI="http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995469 - Disclosure - Significant Accounting Policies (Policies)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-revenue-recognition-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995470 - Disclosure - Note 4 - Revenue Recognition (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-inventories-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995471 - Disclosure - Note 5 - Inventories (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-impairment-of-longlived-assets-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995472 - Disclosure - Note 7 - Impairment of Long-lived Assets (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995473 - Disclosure - Note 8 - Stock-based Compensation (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-earnings-per-share-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995474 - Disclosure - Note 9 - Earnings Per Share (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995475 - Disclosure - Note 11 - Leases (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-restricted-cash-tables" roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995476 - Disclosure - Note 12 - Restricted Cash (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-business-segment-reporting-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995477 - Disclosure - Note 2 - Business Segment Reporting (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-accounts-receivable-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995478 - Disclosure - Note 3 - Accounts Receivable (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-revenue-recognition-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995479 - Disclosure - Note 4 - Revenue Recognition (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-revenue-recognition-revenues-by-revenue-class-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995480 - Disclosure - Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995481 - Disclosure - Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-inventories-schedule-of-inventory-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995482 - Disclosure - Note 5 - Inventories - Schedule of Inventory (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-income-taxes-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995483 - Disclosure - Note 6 - Income Taxes (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-impairment-of-longlived-assets-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995484 - Disclosure - Note 7 - Impairment of Long-lived Assets (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-impairment-of-longlived-assets-goodwill-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995485 - Disclosure - Note 7 - Impairment of Long-lived Assets - Goodwill (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995486 - Disclosure - Note 8 - Stock-based Compensation (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995487 - Disclosure - Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation-stock-option-activity-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995488 - Disclosure - Note 8 - Stock-based Compensation - Stock Option Activity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-stockbased-compensation-restricted-stock-activity-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995489 - Disclosure - Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995490 - Disclosure - Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-debt-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995491 - Disclosure - Note 10 - Debt (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995492 - Disclosure - Note 11 - Leases (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995493 - Disclosure - Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-lease-costs-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995494 - Disclosure - Note 11 - Leases - Lease Costs (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995495 - Disclosure - Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995496 - Disclosure - Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-leases-maturities-of-lease-liabilities-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995497 - Disclosure - Note 11 - Leases - Maturities of Lease Liabilities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995498 - Disclosure - Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-15-treasury-stock-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995499 - Disclosure - Note 15 - Treasury Stock (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-16-noncontrolling-interest-details-textual" roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">995500 - Disclosure - Note 16 - Noncontrolling Interest (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:element abstract="true" id="ppih_AbuDhabiLandLeaseMember" name="AbuDhabiLandLeaseMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" name="AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" name="AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="ppih_BillingsToDate" name="BillingsToDate" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="ppih_CanadianMortgageNoteMember" name="CanadianMortgageNoteMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_CentralBankOfEqyptCbeRateMember" name="CentralBankOfEqyptCbeRateMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" name="CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="ppih_CostsInExcessOfBillingsNet" name="CostsInExcessOfBillingsNet" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" name="CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_CostsIncurredOnUncompletedContracts" name="CostsIncurredOnUncompletedContracts" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_CustomerDepositsCurrent1" name="CustomerDepositsCurrent1" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_DecreaseInOperatingLeaseLiabilityCurrent" name="DecreaseInOperatingLeaseLiabilityCurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" name="DecreaseInOperatingLeaseLiabilityNoncurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_DecreaseInOperatingLeaseRightofuseAsset" name="DecreaseInOperatingLeaseRightofuseAsset" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="ppih_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_EIBORMember" name="EIBORMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_EarnedRevenue" name="EarnedRevenue" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_EstimatedEarnings" name="EstimatedEarnings" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" name="FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_FinanceLeaseObligationsMember" name="FinanceLeaseObligationsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_FinanceLeasesAssetsMember" name="FinanceLeasesAssetsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_ForeignRevolvingLinesMember" name="ForeignRevolvingLinesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_GulfInsulationGroupMember" name="GulfInsulationGroupMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" name="IncreaseDecreaseInContractWithCustomerAssetAndLiability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element id="ppih_IncreaseDecreaseInCustomerDeposits1" name="IncreaseDecreaseInCustomerDeposits1" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_JointVentureMember" name="JointVentureMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_LandAndBuildingsInLebanonTennesseeMember" name="LandAndBuildingsInLebanonTennesseeMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" name="LesseeFinanceLeaseAnnualRentIncreasePercentage" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" name="LesseeFinanceLeaseNumberOfOptionsToExtend" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LesseeOperatingAndFinanceLeasesTextBlock" name="LesseeOperatingAndFinanceLeasesTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_LesseeOperatingLeaseAnnualPayment" name="LesseeOperatingLeaseAnnualPayment" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" name="LineOfCreditFacilityCapitalExpendituresRestrictions" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" name="LineOfCreditFacilityCommonStockRepurchaseRestrictions" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" name="LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" name="LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" name="LineOfCreditFacilityDefaultAdditionalInterestRate" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" name="LineOfCreditFacilityFixedChargeCoverageRatioRequired" nillable="true" substitutionGroup="xbrli:item" type="xbrli:pureItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_LineOfCreditFacilityGuaranteedAmount" name="LineOfCreditFacilityGuaranteedAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LongtermDebtAndLeaseObligationNoncurrent" name="LongtermDebtAndLeaseObligationNoncurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" name="LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" name="MortgageNoteSecuredByTennesseeManufacturingFacilityMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_NorthAmericanLoanPartiesMember" name="NorthAmericanLoanPartiesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_NumberOfMajorCustomers" name="NumberOfMajorCustomers" nillable="true" substitutionGroup="xbrli:item" type="xbrli:integerItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" name="PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_PermaPipeCanadaLtdMember" name="PermaPipeCanadaLtdMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" name="ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_PromissoryNoteMember" name="PromissoryNoteMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" name="RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" name="RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" name="RevolvingCreditLinesUsedByEgyptSubsidiariesMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" name="RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" name="RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" name="RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_RevolvingLinesNorthAmericaMember" name="RevolvingLinesNorthAmericaMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_SIBORMember" name="SIBORMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" name="SaleLeasebackTransactionAnnualRentalPaymentsAmount" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_SecuredOvernightFinancingRateSOFRMember" name="SecuredOvernightFinancingRateSOFRMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:perShareItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:perShareItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_SpecialtyPipingSystemsAndCoatingMember" name="SpecialtyPipingSystemsAndCoatingMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" name="StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" name="StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" name="SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" name="SupplementalCashFlowInformationRelatedLeasesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_TransferredAtPointInTimeUsingInputMethodMember" name="TransferredAtPointInTimeUsingInputMethodMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_TransferredAtPointInTimeUsingOutputMethodMember" name="TransferredAtPointInTimeUsingOutputMethodMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="ppih_TreasuryStockValueAcquired" name="TreasuryStockValueAcquired" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" name="WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-lease-costs-details" name="statement-statement-note-11-leases-lease-costs-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" name="statement-statement-note-11-leases-maturities-of-lease-liabilities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" name="statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" name="statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-tables" name="statement-statement-note-11-leases-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" name="statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" name="statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-12-restricted-cash-tables" name="statement-statement-note-12-restricted-cash-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" name="statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" name="statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-4-revenue-recognition-tables" name="statement-statement-note-4-revenue-recognition-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" name="statement-statement-note-5-inventories-schedule-of-inventory-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-5-inventories-tables" name="statement-statement-note-5-inventories-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" name="statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" name="statement-statement-note-7-impairment-of-longlived-assets-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" name="statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" name="statement-statement-note-8-stockbased-compensation-stock-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" name="statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-8-stockbased-compensation-tables" name="statement-statement-note-8-stockbased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" name="statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-note-9-earnings-per-share-tables" name="statement-statement-note-9-earnings-per-share-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="ppih_statement-statement-significant-accounting-policies-policies" name="statement-statement-significant-accounting-policies-policies" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
</xsd:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>6
<FILENAME>ppih-20240731_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 08:56PM UTC 2024-09-10--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsInExcessOfBillingsNet" xlink:label="ppih_CostsInExcessOfBillingsNet" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredOnUncompletedContracts" xlink:label="ppih_CostsIncurredOnUncompletedContracts" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EarnedRevenue" xlink:label="ppih_EarnedRevenue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EstimatedEarnings" xlink:label="ppih_EstimatedEarnings" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="ppih_EarnedRevenue" xlink:to="ppih_EstimatedEarnings" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="ppih_EarnedRevenue" xlink:to="ppih_CostsIncurredOnUncompletedContracts" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="ppih_CostsInExcessOfBillingsNet" xlink:to="us-gaap_ContractWithCustomerAssetNet" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="ppih_CostsInExcessOfBillingsNet" xlink:to="us-gaap_ContractWithCustomerLiability" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:href="ppih-20240731.xsd#statement-note-5-inventories-schedule-of-inventory-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryFinishedGoods" xlink:label="us-gaap_InventoryFinishedGoods" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryFinishedGoods" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashAndCashEquivalents" xlink:label="us-gaap_RestrictedCashAndCashEquivalents" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="us-gaap_RestrictedCashAndCashEquivalents" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInCustomerDeposits1" xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:label="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GainLossOnDispositionOfAssets" xlink:label="us-gaap_GainLossOnDispositionOfAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:label="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProvisionForDoubtfulAccounts" xlink:label="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfOtherDebt" xlink:label="us-gaap_RepaymentsOfOtherDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_GainLossOnDispositionOfAssets" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="arc"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:type="arc"/>
    <link:calculationArc order="10" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:calculationArc order="11" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:calculationArc order="12" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:calculationArc order="13" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:type="arc"/>
    <link:calculationArc order="14" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:type="arc"/>
    <link:calculationArc order="15" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfOtherDebt" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="arc"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:calculationArc order="7" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-operations-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CostOfRevenue" xlink:label="us-gaap_CostOfRevenue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestIncomeExpenseNet" xlink:label="us-gaap_InterestIncomeExpenseNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SellingExpense" xlink:label="us-gaap_SellingExpense" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_CostOfRevenue" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_SellingExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_InterestIncomeExpenseNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ProfitLoss" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ProfitLoss" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CustomerDepositsCurrent1" xlink:label="ppih_CustomerDepositsCurrent1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedSalesCommissionCurrent" xlink:label="us-gaap_AccruedSalesCommissionCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapital" xlink:label="us-gaap_AdditionalPaidInCapital" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrent" xlink:label="us-gaap_AssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrent" xlink:label="us-gaap_LiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtNoncurrent" xlink:label="us-gaap_LongTermDebtNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermLoansPayable" xlink:label="us-gaap_LongTermLoansPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashCurrent" xlink:label="us-gaap_RestrictedCashCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonValue" xlink:label="us-gaap_TreasuryStockCommonValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_RestrictedCashCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_UnbilledReceivablesCurrent" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_AssetsNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LinesOfCreditCurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedSalesCommissionCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="ppih_CustomerDepositsCurrent1" xlink:type="arc"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_LongTermLoansPayable" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_LongTermDebtNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_TreasuryStockCommonValue" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AdditionalPaidInCapital" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_CommitmentsAndContingencies" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-lease-costs-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SubleaseIncome" xlink:label="us-gaap_SubleaseIncome" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_SubleaseIncome" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_ShortTermLeaseCost" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>7
<FILENAME>ppih-20240731_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 08:56PM UTC 2024-09-10--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default" xlink:type="simple"/>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-" xlink:href="ppih-20240731.xsd#statement-note-14-recent-accounting-pronouncements-" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-" xlink:href="ppih-20240731.xsd#statement-note-13-fair-value-" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories" xlink:href="ppih-20240731.xsd#statement-note-5-inventories" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-document-and-entity-information" xlink:href="ppih-20240731.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentQuarterlyReport" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:definitionArc order="24" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:definitionArc order="25" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:definitionArc order="26" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:definitionArc order="27" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:definitionArc order="28" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:definitionArc order="29" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:href="ppih-20240731.xsd#statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonShares" xlink:label="us-gaap_TreasuryStockCommonShares" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TreasuryStockCommonShares" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation" xlink:href="ppih-20240731.xsd#statement-note-1-basis-of-presentation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting" xlink:href="ppih-20240731.xsd#statement-note-2-business-segment-reporting" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable" xlink:href="ppih-20240731.xsd#statement-note-3-accounts-receivable" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableMember" xlink:label="us-gaap_AccountsReceivableMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:label="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNoncurrentAssetsMember" xlink:label="us-gaap_OtherNoncurrentAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:to="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_OtherNoncurrentAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_AccountsReceivableMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes" xlink:href="ppih-20240731.xsd#statement-note-6-income-taxes" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PermaPipeCanadaLtdMember" xlink:label="ppih_PermaPipeCanadaLtdMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetImpairmentChargesTextBlock" xlink:label="us-gaap_AssetImpairmentChargesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="ppih_PermaPipeCanadaLtdMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_AssetImpairmentChargesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt" xlink:href="ppih-20240731.xsd#statement-note-10-debt" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-10-debt" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CanadianMortgageNoteMember" xlink:label="ppih_CanadianMortgageNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CentralBankOfEqyptCbeRateMember" xlink:label="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EIBORMember" xlink:label="ppih_EIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ForeignRevolvingLinesMember" xlink:label="ppih_ForeignRevolvingLinesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NorthAmericanLoanPartiesMember" xlink:label="ppih_NorthAmericanLoanPartiesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PromissoryNoteMember" xlink:label="ppih_PromissoryNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingLinesNorthAmericaMember" xlink:label="ppih_RevolvingLinesNorthAmericaMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SIBORMember" xlink:label="ppih_SIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SecuredOvernightFinancingRateSOFRMember" xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_WeightedAverageMember" xlink:label="srt_WeightedAverageMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BaseRateMember" xlink:label="us-gaap_BaseRateMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="ppih_RevolvingLinesNorthAmericaMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="us-gaap_BaseRateMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_EntityDomain" xlink:to="ppih_NorthAmericanLoanPartiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="ppih_ForeignRevolvingLinesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_EIBORMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_SIBORMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_WeightedAverageMember" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_PromissoryNoteMember" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_CanadianMortgageNoteMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases" xlink:href="ppih-20240731.xsd#statement-note-11-leases" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AbuDhabiLandLeaseMember" xlink:label="ppih_AbuDhabiLandLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:label="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="ppih_AbuDhabiLandLeaseMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock" xlink:href="ppih-20240731.xsd#statement-note-15-treasury-stock" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockTextBlock" xlink:label="us-gaap_TreasuryStockTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_TreasuryStockTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest" xlink:href="ppih-20240731.xsd#statement-note-16-noncontrolling-interest" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_GulfInsulationGroupMember" xlink:label="ppih_GulfInsulationGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_JointVentureMember" xlink:label="ppih_JointVentureMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesAxis" xlink:label="srt_ConsolidatedEntitiesAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipAxis" xlink:label="srt_OwnershipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestDisclosureTextBlock" xlink:label="us-gaap_MinorityInterestDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_OwnershipAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_OwnershipDomain" xlink:to="ppih_JointVentureMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_EntityDomain" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RelatedPartyDomain" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidatedEntitiesAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidatedEntitiesDomain" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_MinorityInterestDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies" xlink:href="ppih-20240731.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:label="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables" xlink:href="ppih-20240731.xsd#statement-note-5-inventories-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables" xlink:href="ppih-20240731.xsd#statement-note-11-leases-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:label="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:label="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:label="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual" xlink:href="ppih-20240731.xsd#statement-note-2-business-segment-reporting-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NumberOfReportableSegments" xlink:label="us-gaap_NumberOfReportableSegments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NumberOfReportableSegments" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual" xlink:href="ppih-20240731.xsd#statement-note-3-accounts-receivable-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NumberOfMajorCustomers" xlink:label="ppih_NumberOfMajorCustomers" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableMember" xlink:label="us-gaap_AccountsReceivableMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNet" xlink:label="us-gaap_AccountsReceivableNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNoncurrentAssetsMember" xlink:label="us-gaap_OtherNoncurrentAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:to="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_OtherNoncurrentAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_AccountsReceivableMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccountsReceivableNet" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_NumberOfMajorCustomers" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnbilledReceivablesCurrent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual" xlink:href="ppih-20240731.xsd#statement-note-6-income-taxes-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PermaPipeCanadaLtdMember" xlink:label="ppih_PermaPipeCanadaLtdMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:label="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="ppih_PermaPipeCanadaLtdMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual" xlink:href="ppih-20240731.xsd#statement-note-10-debt-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CanadianMortgageNoteMember" xlink:label="ppih_CanadianMortgageNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CentralBankOfEqyptCbeRateMember" xlink:label="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EIBORMember" xlink:label="ppih_EIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ForeignRevolvingLinesMember" xlink:label="ppih_ForeignRevolvingLinesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityGuaranteedAmount" xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NorthAmericanLoanPartiesMember" xlink:label="ppih_NorthAmericanLoanPartiesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PromissoryNoteMember" xlink:label="ppih_PromissoryNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingLinesNorthAmericaMember" xlink:label="ppih_RevolvingLinesNorthAmericaMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SIBORMember" xlink:label="ppih_SIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SecuredOvernightFinancingRateSOFRMember" xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_WeightedAverageMember" xlink:label="srt_WeightedAverageMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BaseRateMember" xlink:label="us-gaap_BaseRateMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtAndCapitalLeaseObligations" xlink:label="us-gaap_DebtAndCapitalLeaseObligations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:label="us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:label="us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentMaturityDate" xlink:label="us-gaap_DebtInstrumentMaturityDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentTerm" xlink:label="us-gaap_DebtInstrumentTerm" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredFinanceCostsNet" xlink:label="us-gaap_DeferredFinanceCostsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:label="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseDiscountRate" xlink:label="us-gaap_LesseeFinanceLeaseDiscountRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:label="us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:label="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:label="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:label="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfSecuredDebt" xlink:label="us-gaap_RepaymentsOfSecuredDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SecuredDebt" xlink:label="us-gaap_SecuredDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain-default" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="ppih_RevolvingLinesNorthAmericaMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="us-gaap_BaseRateMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_EntityDomain" xlink:to="ppih_NorthAmericanLoanPartiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="ppih_ForeignRevolvingLinesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_EIBORMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_VariableRateDomain" xlink:to="ppih_SIBORMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_WeightedAverageMember" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_PromissoryNoteMember" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="ppih_CanadianMortgageNoteMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtAndCapitalLeaseObligations" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentTerm" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LinesOfCreditCurrent" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RepaymentsOfSecuredDebt" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseDiscountRate" xlink:type="arc"/>
    <link:definitionArc order="24" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:type="arc"/>
    <link:definitionArc order="25" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="26" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="arc"/>
    <link:definitionArc order="27" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="arc"/>
    <link:definitionArc order="28" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityGuaranteedAmount" xlink:type="arc"/>
    <link:definitionArc order="29" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:type="arc"/>
    <link:definitionArc order="30" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="arc"/>
    <link:definitionArc order="31" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="arc"/>
    <link:definitionArc order="32" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentFaceAmount" xlink:type="arc"/>
    <link:definitionArc order="33" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentMaturityDate" xlink:type="arc"/>
    <link:definitionArc order="34" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SecuredDebt" xlink:type="arc"/>
    <link:definitionArc order="35" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:type="arc"/>
    <link:definitionArc order="36" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredFinanceCostsNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual" xlink:href="ppih-20240731.xsd#statement-note-11-leases-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AbuDhabiLandLeaseMember" xlink:label="ppih_AbuDhabiLandLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingLeaseAnnualPayment" xlink:label="ppih_LesseeOperatingLeaseAnnualPayment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseExpense" xlink:label="us-gaap_OperatingLeaseExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="ppih_AbuDhabiLandLeaseMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeOperatingLeaseAnnualPayment" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual" xlink:href="ppih-20240731.xsd#statement-note-15-treasury-stock-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StockRepurchaseProgramAuthorizedAmount1" xlink:label="srt_StockRepurchaseProgramAuthorizedAmount1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockRepurchasedDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedDuringPeriodShares" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="srt_StockRepurchaseProgramAuthorizedAmount1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedDuringPeriodShares" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual" xlink:href="ppih-20240731.xsd#statement-note-16-noncontrolling-interest-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_GulfInsulationGroupMember" xlink:label="ppih_GulfInsulationGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_JointVentureMember" xlink:label="ppih_JointVentureMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesAxis" xlink:label="srt_ConsolidatedEntitiesAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipAxis" xlink:label="srt_OwnershipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:label="us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:label="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesPayable" xlink:label="us-gaap_NotesPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesReceivableNet" xlink:label="us-gaap_NotesReceivableNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:label="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_OwnershipAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_OwnershipDomain" xlink:to="ppih_JointVentureMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_EntityDomain" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RelatedPartyDomain" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidatedEntitiesAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidatedEntitiesDomain" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NotesPayable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NotesReceivableNet" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Assets" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:label="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:label="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TreasuryStockValueAcquired" xlink:label="ppih_TreasuryStockValueAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAdjustmentMember" xlink:label="srt_RestatementAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAxis" xlink:label="srt_RestatementAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementDomain" xlink:label="srt_RestatementDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementDomain" xlink:label="srt_RestatementDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonMember" xlink:label="us-gaap_TreasuryStockCommonMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:label="us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_TreasuryStockCommonMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RestatementAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RestatementDomain" xlink:to="srt_RestatementAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RestatementAxis" xlink:to="srt_RestatementDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RestatementAxis" xlink:to="srt_RestatementDomain" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_TreasuryStockValueAcquired" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_BillingsToDate" xlink:label="ppih_BillingsToDate" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsInExcessOfBillingsNet" xlink:label="ppih_CostsInExcessOfBillingsNet" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredOnUncompletedContracts" xlink:label="ppih_CostsIncurredOnUncompletedContracts" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EarnedRevenue" xlink:label="ppih_EarnedRevenue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EstimatedEarnings" xlink:label="ppih_EstimatedEarnings" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsIncurredOnUncompletedContracts" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_EstimatedEarnings" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_EarnedRevenue" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_BillingsToDate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsInExcessOfBillingsNet" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerAssetNet" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:href="ppih-20240731.xsd#statement-note-5-inventories-schedule-of-inventory-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryFinishedGoods" xlink:label="us-gaap_InventoryFinishedGoods" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryFinishedGoods" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashAndCashEquivalents" xlink:label="us-gaap_RestrictedCashAndCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RestrictedCashAndCashEquivalents" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeaseObligationsMember" xlink:label="ppih_FinanceLeaseObligationsMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInCustomerDeposits1" xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:label="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:label="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GainLossOnDispositionOfAssets" xlink:label="us-gaap_GainLossOnDispositionOfAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:label="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeAxis" xlink:label="us-gaap_LongtermDebtTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeDomain" xlink:label="us-gaap_LongtermDebtTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeDomain" xlink:label="us-gaap_LongtermDebtTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:label="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProvisionForDoubtfulAccounts" xlink:label="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ReceivablesBillingStatusDomain" xlink:label="us-gaap_ReceivablesBillingStatusDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ReceivablesBillingStatusDomain" xlink:label="us-gaap_ReceivablesBillingStatusDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfOtherDebt" xlink:label="us-gaap_RepaymentsOfOtherDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledRevenuesMember" xlink:label="us-gaap_UnbilledRevenuesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:to="us-gaap_ReceivablesBillingStatusDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_LongtermDebtTypeAxis" xlink:to="us-gaap_LongtermDebtTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ReceivablesBillingStatusDomain" xlink:to="us-gaap_UnbilledRevenuesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:to="us-gaap_ReceivablesBillingStatusDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LongtermDebtTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LongtermDebtTypeDomain" xlink:to="ppih_FinanceLeaseObligationsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_LongtermDebtTypeAxis" xlink:to="us-gaap_LongtermDebtTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_GainLossOnDispositionOfAssets" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfOtherDebt" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaidNet" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-operations-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CostOfRevenue" xlink:label="us-gaap_CostOfRevenue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestIncomeExpenseNet" xlink:label="us-gaap_InterestIncomeExpenseNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SellingExpense" xlink:label="us-gaap_SellingExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfRevenue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingExpense" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_InterestIncomeExpenseNet" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProfitLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeasesAssetsMember" xlink:label="ppih_FinanceLeasesAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="ppih_FinanceLeasesAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CustomerDepositsCurrent1" xlink:label="ppih_CustomerDepositsCurrent1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedSalesCommissionCurrent" xlink:label="us-gaap_AccruedSalesCommissionCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapital" xlink:label="us-gaap_AdditionalPaidInCapital" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrent" xlink:label="us-gaap_AssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrentAbstract" xlink:label="us-gaap_AssetsNoncurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrent" xlink:label="us-gaap_LiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrentAbstract" xlink:label="us-gaap_LiabilitiesNoncurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtNoncurrent" xlink:label="us-gaap_LongTermDebtNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermLoansPayable" xlink:label="us-gaap_LongTermLoansPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashCurrent" xlink:label="us-gaap_RestrictedCashCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonValue" xlink:label="us-gaap_TreasuryStockCommonValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RelatedPartyDomain" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_RestrictedCashCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_UnbilledReceivablesCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsNoncurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_AssetsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_Assets" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedSalesCommissionCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LinesOfCreditCurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="ppih_CustomerDepositsCurrent1" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesNoncurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LongTermDebtNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LongTermLoansPayable" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LiabilitiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_CommitmentsAndContingencies" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapital" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_TreasuryStockCommonValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:label="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProductMember" xlink:label="us-gaap_ProductMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="us-gaap_ProductMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="us-gaap_TransferredAtPointInTimeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-lease-costs-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SubleaseIncome" xlink:label="us-gaap_SubleaseIncome" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermLeaseCost" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SubleaseIncome" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost" xlink:type="arc"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>8
<FILENAME>ppih-20240731_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 08:56PM UTC 2024-09-10--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel" xlink:type="simple"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DocumentAndEntityInformation" xlink:label="ppih_DocumentAndEntityInformation" xlink:type="locator"/>
    <link:label xlink:label="ppih_DocumentAndEntityInformation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document And Entity Information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_DocumentAndEntityInformation" xlink:to="ppih_DocumentAndEntityInformation-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:label xlink:label="ppih_NoteToFinancialStatementDetailsTextual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note To Financial Statement Details Textual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="ppih_NoteToFinancialStatementDetailsTextual-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-significant-accounting-policies-policies" xlink:label="ppih_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-significant-accounting-policies-policies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-significant-accounting-policies-policies" xlink:to="ppih_statement-statement-significant-accounting-policies-policies-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-tables" xlink:label="ppih_statement-statement-note-4-revenue-recognition-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-4-revenue-recognition-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Revenue Recognition</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-4-revenue-recognition-tables" xlink:to="ppih_statement-statement-note-4-revenue-recognition-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-5-inventories-tables" xlink:label="ppih_statement-statement-note-5-inventories-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-5-inventories-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-5-inventories-tables" xlink:to="ppih_statement-statement-note-5-inventories-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Impairment of Long-lived Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:to="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-8-stockbased-compensation-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Stock-based Compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:to="ppih_statement-statement-note-8-stockbased-compensation-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-9-earnings-per-share-tables" xlink:label="ppih_statement-statement-note-9-earnings-per-share-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-9-earnings-per-share-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Earnings Per Share</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-9-earnings-per-share-tables" xlink:to="ppih_statement-statement-note-9-earnings-per-share-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-tables" xlink:label="ppih_statement-statement-note-11-leases-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-tables" xlink:to="ppih_statement-statement-note-11-leases-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrentAbstract" xlink:label="us-gaap_LiabilitiesNoncurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesNoncurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LiabilitiesNoncurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-12-restricted-cash-tables" xlink:label="ppih_statement-statement-note-12-restricted-cash-tables" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-12-restricted-cash-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Restricted Cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-12-restricted-cash-tables" xlink:to="ppih_statement-statement-note-12-restricted-cash-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:label="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:to="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:label="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:to="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:label="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Inventories - Schedule of Inventory (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:to="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Impairment of Long-lived Assets - Goodwill (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:to="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:to="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Stock-based Compensation - Stock Option Activity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:to="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesCurrent</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:to="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:label="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:to="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:label="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:to="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-lease-costs-details" xlink:label="ppih_statement-statement-note-11-leases-lease-costs-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-lease-costs-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases - Lease Costs (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-lease-costs-details" xlink:to="ppih_statement-statement-note-11-leases-lease-costs-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:label="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:to="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:label="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:to="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:label="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 11 - Leases - Maturities of Lease Liabilities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:to="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:label="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="locator"/>
    <link:label xlink:label="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:to="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatements" xlink:label="ppih_NotesToFinancialStatements" xlink:type="locator"/>
    <link:label xlink:label="ppih_NotesToFinancialStatements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_NotesToFinancialStatements" xlink:to="ppih_NotesToFinancialStatements-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:label xlink:label="ppih_NotesToFinancialStatementsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="ppih_NotesToFinancialStatementsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Outstanding, aggregate intrinsic value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Option, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Granted, weighted average price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Outstanding, weighted average price (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Outstanding, weighted average price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign currency translation adjustment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:label="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent</link:label>
    <link:label xlink:label="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-Term Debt and Lease Obligation, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:to="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Outstanding, weighted average remaining contractual term (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Outstanding, options (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Outstanding, options (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercised, aggregate intrinsic value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LinesOfCreditCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving line - North America</link:label>
    <link:label xlink:label="us-gaap_LinesOfCreditCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LinesOfCreditCurrent" xlink:to="us-gaap_LinesOfCreditCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Outstanding, aggregate intrinsic value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested, Number of Shares (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Nonvested, Number of Shares (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Billings in excess of costs and estimated earnings on uncompleted contracts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expired or forfeited, weighted average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Goodwill [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfGoodwillTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercised, weighted average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedLiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other accrued liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedLiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued compensation and payroll taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedIncomeTaxesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsPayableCurrent" xlink:to="us-gaap_AccountsPayableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:label="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Loans, Notes, Trade and Other Receivables Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:to="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures and Expirations in Period (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Expired or forfeited, options (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CreditFacilityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Credit Facility [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:label="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Proceeds from Sale of Property, Plant, and Equipment, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:to="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CreditFacilityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Credit Facility [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CreditFacilityDomain" xlink:to="us-gaap_CreditFacilityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PolicyTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_PolicyTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedSalesCommissionCurrent" xlink:label="us-gaap_AccruedSalesCommissionCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedSalesCommissionCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commissions and management incentives payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedSalesCommissionCurrent" xlink:to="us-gaap_AccruedSalesCommissionCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Capital expenditures</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock options and restricted stock with exercise prices or grant date prices below the average market prices (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash income taxes paid</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesPaidNet" xlink:to="us-gaap_IncomeTaxesPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted average common shares outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockTextBlock" xlink:label="us-gaap_TreasuryStockTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TreasuryStockTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Treasury Stock [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TreasuryStockTextBlock" xlink:to="us-gaap_TreasuryStockTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProductMember" xlink:label="us-gaap_ProductMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProductMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProductMember" xlink:to="us-gaap_ProductMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetImpairmentChargesTextBlock" xlink:label="us-gaap_AssetImpairmentChargesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetImpairmentChargesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Asset Impairment Charges [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetImpairmentChargesTextBlock" xlink:to="us-gaap_AssetImpairmentChargesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Assets</link:label>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Assets</link:label>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Assets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental cash flow information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseExpense" xlink:label="us-gaap_OperatingLeaseExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingLeaseExpense</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseExpense" xlink:to="us-gaap_OperatingLeaseExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SubleaseIncome" xlink:label="us-gaap_SubleaseIncome" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SubleaseIncome-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SubleaseIncome</link:label>
    <link:label xlink:label="us-gaap_SubleaseIncome-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Sub-lease income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SubleaseIncome" xlink:to="us-gaap_SubleaseIncome-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Deferred tax assets</link:label>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredIncomeTaxAssetsNet</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxAssetsNet" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ContractWithCustomerAssetNet</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerAssetNet" xlink:to="us-gaap_ContractWithCustomerAssetNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashAndCashEquivalents" xlink:label="us-gaap_RestrictedCashAndCashEquivalents" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedCashAndCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RestrictedCashAndCashEquivalents</link:label>
    <link:label xlink:label="us-gaap_RestrictedCashAndCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Restricted cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedCashAndCashEquivalents" xlink:to="us-gaap_RestrictedCashAndCashEquivalents-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AwardTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_AwardTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income (loss) attributable to common stock</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net income (loss) attributable to common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_NetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from insurance recovery for property and equipment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restricted Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedStockMember" xlink:to="us-gaap_RestrictedStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Less: Net income attributable to non-controlling interest</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Net Income (Loss) Attributable to Noncontrolling Interest</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeStockOptionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-Based Payment Arrangement, Option [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeStockOptionMember" xlink:to="us-gaap_EmployeeStockOptionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill, foreign exchange change effect</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Asset, Equal to or Greater than 90 Days Past Due [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:to="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Asset, Aging [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Asset, Aging [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Less: Comprehensive income attributable to non-controlling interests</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accumulated depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property, plant and equipment, net of accumulated depreciation</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Property and Equipment - net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Goodwill" xlink:to="us-gaap_Goodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:label="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination</link:label>
    <link:label xlink:label="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Noncontrolling Interest, Increase from Business Combination</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:to="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and Equipment - gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentGross" xlink:to="us-gaap_PropertyPlantAndEquipmentGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeAxis" xlink:label="us-gaap_LongtermDebtTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongtermDebtTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Term Debt, Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongtermDebtTypeAxis" xlink:to="us-gaap_LongtermDebtTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeDomain" xlink:label="us-gaap_LongtermDebtTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongtermDebtTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Term Debt, Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongtermDebtTypeDomain" xlink:to="us-gaap_LongtermDebtTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProfitLoss-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_ProfitLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ProfitLoss</link:label>
    <link:label xlink:label="us-gaap_ProfitLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProfitLoss" xlink:to="us-gaap_ProfitLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest</link:label>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Comprehensive income (loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Income tax receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:to="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Other assets and liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_GulfInsulationGroupMember" xlink:label="ppih_GulfInsulationGroupMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_GulfInsulationGroupMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Gulf Insulation Group [Member]</link:label>
    <link:label xlink:label="ppih_GulfInsulationGroupMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents Gulf Insulation Group.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_GulfInsulationGroupMember" xlink:to="ppih_GulfInsulationGroupMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Vested and issued, weighted average price (in dollars per share)</link:label>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Earnings (loss) per share attributable to common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Earnings Per Share [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareTextBlock" xlink:to="us-gaap_EarningsPerShareTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod</link:label>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Vested and issued (in shares)</link:label>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of equity-based payment instruments, excluding stock (or unit) options, that vested and issued during the reporting period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TreasuryStockValueAcquired" xlink:label="ppih_TreasuryStockValueAcquired" xlink:type="locator"/>
    <link:label xlink:label="ppih_TreasuryStockValueAcquired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:label xlink:label="ppih_TreasuryStockValueAcquired-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Equity impact of the common stock that were repurchased during the period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_TreasuryStockValueAcquired" xlink:to="ppih_TreasuryStockValueAcquired-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued compensation and payroll taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:to="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income tax expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:label="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amount attributable to non-controlling interest</link:label>
    <link:label xlink:label="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of other increase (decrease) in additional paid in capital (APIC) resulting from reclassification to non-controlling interest.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:to="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsPayable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Long-term finance obligation</link:label>
    <link:label xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LongtermDebtAndLeaseObligationNoncurrent</link:label>
    <link:label xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-Term Debt and Lease Obligation, Noncurrent</link:label>
    <link:label xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of long-term debt and lease obligation, classified as noncurrent.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Forfeited or retired for taxes (in dollars per share)</link:label>
    <link:label xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised, or put into effect as a result of the occurrence of a terminating event, or retired for taxes.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:type="locator"/>
    <link:label xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed</link:label>
    <link:label xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchase Program, Authorized Repurchase Amount Used</link:label>
    <link:label xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount used of the stock repurchase plan authorized.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:to="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingExpenses</link:label>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_OperatingExpenses-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentTerm" xlink:label="us-gaap_DebtInstrumentTerm" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentTerm-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentTerm</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentTerm-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Term (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentTerm" xlink:to="us-gaap_DebtInstrumentTerm-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:type="locator"/>
    <link:label xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes</link:label>
    <link:label xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Forfeited or retired for taxes (in shares)</link:label>
    <link:label xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Number of shares related to Restricted Stock Award forfeited or retired for taxes during the period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:to="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:type="locator"/>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_DecreaseInOperatingLeaseRightofuseAsset</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Decrease in Operating Lease Right-of-use Asset</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of decrease in the operating lease right-of-use asset as of the reporting period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:to="ppih_DecreaseInOperatingLeaseRightofuseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GeneralAndAdministrativeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">General and administrative expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GeneralAndAdministrativeExpense" xlink:to="us-gaap_GeneralAndAdministrativeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_DecreaseInOperatingLeaseLiabilityCurrent</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Decrease in Operating Lease Liability, Current</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of decrease in the current portion of operating lease liability during the reporting period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_DecreaseInOperatingLeaseLiabilityNoncurrent</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Decrease in Operating Lease Liability, Noncurrent</link:label>
    <link:label xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of decrease in the non-current portion of the operating lease liability as of the reporting period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AllocatedShareBasedCompensationExpense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_AmendmentFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentFlag" xlink:to="dei_AmendmentFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ComprehensiveIncomeNetOfTax</link:label>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total comprehensive income (loss) attributable to common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:label xlink:label="dei_CityAreaCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CityAreaCode" xlink:to="dei_CityAreaCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentMaturityDate" xlink:label="us-gaap_DebtInstrumentMaturityDate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentMaturityDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentMaturityDate</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentMaturityDate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Maturity Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentMaturityDate" xlink:to="us-gaap_DebtInstrumentMaturityDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharesOutstanding</link:label>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balances (in shares)</link:label>
    <link:label xlink:label="us-gaap_SharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balances (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharesOutstanding" xlink:to="us-gaap_SharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesOutstanding" xlink:to="us-gaap_CommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Lines Used by Egypt Subsidiaries [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information related to revolving credit lines used by Egypt subsidiaries.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_CurrentFiscalYearEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CurrentFiscalYearEndDate" xlink:to="dei_CurrentFiscalYearEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentBasisSpreadOnVariableRate1</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Basis Spread on Variable Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Lines Used by Egypt Subsidiaries 2 [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents second revolving credit lines used by Egypt subsidiaries.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:label="us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentInterestRateStatedPercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentInterestRateStatedPercentage</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentInterestRateStatedPercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Interest Rate, Stated Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:to="us-gaap_DebtInstrumentInterestRateStatedPercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesReceivableNet" xlink:label="us-gaap_NotesReceivableNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NotesReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NotesReceivableNet</link:label>
    <link:label xlink:label="us-gaap_NotesReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Financing Receivable, after Allowance for Credit Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NotesReceivableNet" xlink:to="us-gaap_NotesReceivableNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LeaseCost</link:label>
    <link:label xlink:label="us-gaap_LeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total Lease costs</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCost" xlink:to="us-gaap_LeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:label="us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentInterestRateEffectivePercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentInterestRateEffectivePercentage</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentInterestRateEffectivePercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Interest Rate, Effective Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:to="us-gaap_DebtInstrumentInterestRateEffectivePercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PermaPipeCanadaLtdMember" xlink:label="ppih_PermaPipeCanadaLtdMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_PermaPipeCanadaLtdMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Perma-Pipe Canada, Ltd [Member]</link:label>
    <link:label xlink:label="ppih_PermaPipeCanadaLtdMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information by business combination or series of individually immaterial business combinations.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_PermaPipeCanadaLtdMember" xlink:to="ppih_PermaPipeCanadaLtdMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalPeriodFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalPeriodFocus" xlink:to="dei_DocumentFiscalPeriodFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease costs</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseCost" xlink:to="us-gaap_OperatingLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalYearFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalYearFocus" xlink:to="dei_DocumentFiscalYearFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShortTermLeaseCost-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Short-term lease costs (1)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShortTermLeaseCost" xlink:to="us-gaap_ShortTermLeaseCost-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseCostTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease, Cost [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseCostTableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fixed assets acquired under finance leases - non-cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentPeriodEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodEndDate" xlink:to="dei_DocumentPeriodEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating leases liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating leases (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFileNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFileNumber" xlink:to="dei_EntityFileNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityEmergingGrowthCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityEmergingGrowthCompany" xlink:to="dei_EntityEmergingGrowthCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentFaceAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtInstrumentFaceAmount</link:label>
    <link:label xlink:label="us-gaap_DebtInstrumentFaceAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Instrument, Face Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentFaceAmount" xlink:to="us-gaap_DebtInstrumentFaceAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentType-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentType" xlink:to="dei_DocumentType-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:label xlink:label="dei_EntitySmallBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Small Business</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntitySmallBusiness" xlink:to="dei_EntitySmallBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityShellCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Shell Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityShellCompany" xlink:to="dei_EntityShellCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFilerCategory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Filer Category</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFilerCategory" xlink:to="dei_EntityFilerCategory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Instrument [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCurrentReportingStatus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCurrentReportingStatus" xlink:to="dei_EntityCurrentReportingStatus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtInstrumentNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Instrument, Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtInstrumentNameDomain" xlink:to="us-gaap_DebtInstrumentNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional SOFR Adjustment Based on Interest Period [Member]</link:label>
    <link:label xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to SOFR adjustment based on the term of the interest period.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:to="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableRateDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable Rate [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableRateDomain" xlink:to="us-gaap_VariableRateDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNet" xlink:label="us-gaap_AccountsReceivableNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccountsReceivableNet</link:label>
    <link:label xlink:label="us-gaap_AccountsReceivableNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts Receivable, after Allowance for Credit Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsReceivableNet" xlink:to="us-gaap_AccountsReceivableNet-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SecuredOvernightFinancingRateSOFRMember" xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Secured Overnight Financing Rate (SOFR) [Member]</link:label>
    <link:label xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the Secured Overnight Financing Rate (SOFR).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:to="ppih_SecuredOvernightFinancingRateSOFRMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_VariableRateAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Variable Rate [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsReceivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Increase (Decrease) in Accounts Receivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Accounts receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Unbilled accounts receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Comprehensive Income [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:to="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityTaxIdentificationNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityTaxIdentificationNumber" xlink:to="dei_EntityTaxIdentificationNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCentralIndexKey-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCentralIndexKey" xlink:to="dei_EntityCentralIndexKey-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityRegistrantName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityRegistrantName" xlink:to="dei_EntityRegistrantName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityDomain" xlink:to="dei_EntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CustomerConcentrationRiskMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer Concentration Risk [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CustomerConcentrationRiskMember" xlink:to="us-gaap_CustomerConcentrationRiskMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:label xlink:label="dei_LegalEntityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Entity [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LegalEntityAxis" xlink:to="dei_LegalEntityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressAddressLine1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine1" xlink:to="dei_EntityAddressAddressLine1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_NonRule10b51ArrTrmntdFlag" xlink:label="ecd_NonRule10b51ArrTrmntdFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_NonRule10b51ArrTrmntdFlag</link:label>
    <link:label xlink:label="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Non-Rule 10b5-1 Arrangement Terminated [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_NonRule10b51ArrTrmntdFlag" xlink:to="ecd_NonRule10b51ArrTrmntdFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:label="us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TreasuryStockValueAcquiredCostMethod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TreasuryStockValueAcquiredCostMethod</link:label>
    <link:label xlink:label="us-gaap_TreasuryStockValueAcquiredCostMethod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:to="us-gaap_TreasuryStockValueAcquiredCostMethod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressCityOrTown-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCityOrTown" xlink:to="dei_EntityAddressCityOrTown-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_Rule10b51ArrTrmntdFlag" xlink:label="ecd_Rule10b51ArrTrmntdFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_Rule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_Rule10b51ArrTrmntdFlag</link:label>
    <link:label xlink:label="ecd_Rule10b51ArrTrmntdFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Rule 10b5-1 Arrangement Terminated [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_Rule10b51ArrTrmntdFlag" xlink:to="ecd_Rule10b51ArrTrmntdFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_Rule10b51ArrAdoptedFlag" xlink:label="ecd_Rule10b51ArrAdoptedFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_Rule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_Rule10b51ArrAdoptedFlag</link:label>
    <link:label xlink:label="ecd_Rule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Rule 10b5-1 Arrangement Adopted [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_Rule10b51ArrAdoptedFlag" xlink:to="ecd_Rule10b51ArrAdoptedFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressPostalZipCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressPostalZipCode" xlink:to="dei_EntityAddressPostalZipCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonValue" xlink:label="us-gaap_TreasuryStockCommonValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TreasuryStockCommonValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TreasuryStockCommonValue</link:label>
    <link:label xlink:label="us-gaap_TreasuryStockCommonValue-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Treasury stock, 112 shares at July 31, 2024 and January 31, 2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TreasuryStockCommonValue" xlink:to="us-gaap_TreasuryStockCommonValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressStateOrProvince-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressStateOrProvince" xlink:to="dei_EntityAddressStateOrProvince-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_NonRule10b51ArrAdoptedFlag" xlink:label="ecd_NonRule10b51ArrAdoptedFlag" xlink:type="locator"/>
    <link:label xlink:label="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ecd_NonRule10b51ArrAdoptedFlag</link:label>
    <link:label xlink:label="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Non-Rule 10b5-1 Arrangement Adopted [Flag]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_NonRule10b51ArrAdoptedFlag" xlink:to="ecd_NonRule10b51ArrAdoptedFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AllowanceForDoubtfulAccountsReceivable</link:label>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskTypeDomain" xlink:to="us-gaap_ConcentrationRiskTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_MtrlTermsOfTrdArrTextBlock" xlink:label="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ecd_MtrlTermsOfTrdArrTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Material Terms of Trading Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ecd_MtrlTermsOfTrdArrTextBlock" xlink:to="ecd_MtrlTermsOfTrdArrTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockRepurchasedDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedDuringPeriodShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedDuringPeriodShares</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock Repurchased During Period, Shares (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedDuringPeriodShares" xlink:to="us-gaap_StockRepurchasedDuringPeriodShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCommonStockSharesOutstanding" xlink:to="dei_EntityCommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SalesRevenueNetMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue Benchmark [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SalesRevenueNetMember" xlink:to="us-gaap_SalesRevenueNetMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableMember" xlink:label="us-gaap_AccountsReceivableMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsReceivableMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts Receivable [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsReceivableMember" xlink:to="us-gaap_AccountsReceivableMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Renewal of Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]</link:label>
    <link:label xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents revolving credit lines used by Saudi Arabian subsidiary.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:to="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInInventories</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInInventories" xlink:to="us-gaap_IncreaseDecreaseInInventories-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:label xlink:label="dei_TradingSymbol-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_TradingSymbol" xlink:to="dei_TradingSymbol-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:label="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Interest Rate at Period End</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:to="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_LocalPhoneNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LocalPhoneNumber" xlink:to="dei_LocalPhoneNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Remaining Borrowing Capacity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Exercised, options (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GainLossOnDispositionOfAssets" xlink:label="us-gaap_GainLossOnDispositionOfAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GainLossOnDispositionOfAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GainLossOnDispositionOfAssets</link:label>
    <link:label xlink:label="us-gaap_GainLossOnDispositionOfAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Gain (loss) from disposal of fixed assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GainLossOnDispositionOfAssets" xlink:to="us-gaap_GainLossOnDispositionOfAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TableTextBlock</link:label>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes Tables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_TableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Maximum Borrowing Capacity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Current Borrowing Capacity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:to="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage</link:label>
    <link:label xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Unused Capacity, Commitment Fee Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Related and Nonrelated Parties [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RelatedPartyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Related and Nonrelated Parties [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RelatedPartyDomain" xlink:to="us-gaap_RelatedPartyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shares issued, net of shares used for tax withholding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProvisionForDoubtfulAccounts" xlink:label="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProvisionForDoubtfulAccounts-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Provision on uncollectible accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProvisionForDoubtfulAccounts" xlink:to="us-gaap_ProvisionForDoubtfulAccounts-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SellingExpense" xlink:label="us-gaap_SellingExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Selling expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingExpense" xlink:to="us-gaap_SellingExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesAndStockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities and stockholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained earnings</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrent" xlink:label="us-gaap_AssetsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsNoncurrent</link:label>
    <link:label xlink:label="us-gaap_AssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsNoncurrent" xlink:to="us-gaap_AssetsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PromissoryNoteMember" xlink:label="ppih_PromissoryNoteMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_PromissoryNoteMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Promissory Note [Member]</link:label>
    <link:label xlink:label="ppih_PromissoryNoteMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Promissory note.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_PromissoryNoteMember" xlink:to="ppih_PromissoryNoteMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtDisclosureTextBlock" xlink:to="us-gaap_DebtDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Changes in operating assets and liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DisclosureTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes to Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryDisclosureTextBlock" xlink:to="us-gaap_InventoryDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease liability long-term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Inventory, Current [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:label="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restrictions on Cash and Cash Equivalents [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:to="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Total lease liabilities, operating leases</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Liability</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiability" xlink:to="us-gaap_OperatingLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:label="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxesAndTaxCredits-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:to="us-gaap_DeferredIncomeTaxesAndTaxCredits-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease liability short-term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:to="us-gaap_CashAndCashEquivalentsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance lease liability short-term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityCurrent" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance lease liability long-term</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease right-of-use asset</link:label>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Operating Lease, Right-of-Use Asset</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease payments, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Total lease liabilities, finance leases</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finance Lease, Liability</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiability-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total finance lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiability" xlink:to="us-gaap_FinanceLeaseLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less: amount representing interest, operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financing cash outflows from finance leases</link:label>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments on finance lease obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeasePrincipalPayments" xlink:to="us-gaap_FinanceLeasePrincipalPayments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2028, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_JointVentureMember" xlink:label="ppih_JointVentureMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_JointVentureMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Joint Venture [Member]</link:label>
    <link:label xlink:label="ppih_JointVentureMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Relating to the Joint Venture.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_JointVentureMember" xlink:to="ppih_JointVentureMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2029, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseRightOfUseAsset</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finance Lease, Right-of-Use Asset, after Accumulated Amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAsset" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2030, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Thereafter, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2026, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2027, operating leases</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensation" xlink:to="us-gaap_ShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherAssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherAssetsNoncurrent" xlink:to="us-gaap_OtherAssetsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">For the six months ending January 31, 2025</link:label>
    <link:label xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpensesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpensesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NumberOfMajorCustomers" xlink:label="ppih_NumberOfMajorCustomers" xlink:type="locator"/>
    <link:label xlink:label="ppih_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_NumberOfMajorCustomers</link:label>
    <link:label xlink:label="ppih_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Major Customers</link:label>
    <link:label xlink:label="ppih_NumberOfMajorCustomers-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_NumberOfMajorCustomers" xlink:to="ppih_NumberOfMajorCustomers-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:label="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PropertyPlantAndEquipmentFairValueDisclosure</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Property, Plant, and Equipment, Fair Value Disclosure</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:to="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DepreciationDepletionAndAmortization</link:label>
    <link:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DepreciationDepletionAndAmortization" xlink:to="us-gaap_DepreciationDepletionAndAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_TransferredAtPointInTimeUsingInputMethodMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transferred at Point in Time Using Input Method [Member]</link:label>
    <link:label xlink:label="ppih_TransferredAtPointInTimeUsingInputMethodMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to transfers at a point in time using an input method.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:to="ppih_TransferredAtPointInTimeUsingInputMethodMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:label="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_SpecialtyPipingSystemsAndCoatingMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Specialty Piping Systems And Coating [Member]</link:label>
    <link:label xlink:label="ppih_SpecialtyPipingSystemsAndCoatingMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to Specialty Piping Systems and Coating.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:to="ppih_SpecialtyPipingSystemsAndCoatingMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sales by product, percent</link:label>
    <link:label xlink:label="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the percentage of revenue from contracts with customers that is attributable to a specified product or service.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:to="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_TransferredAtPointInTimeUsingOutputMethodMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transferred at Point in Time Using Output Method [Member]</link:label>
    <link:label xlink:label="ppih_TransferredAtPointInTimeUsingOutputMethodMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to transfers at a point in time using an output method.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:to="ppih_TransferredAtPointInTimeUsingOutputMethodMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsCurrent</link:label>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrentAbstract" xlink:label="us-gaap_AssetsNoncurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsNoncurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_AssetsNoncurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseDiscountRate" xlink:label="us-gaap_LesseeFinanceLeaseDiscountRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseDiscountRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeFinanceLeaseDiscountRate</link:label>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseDiscountRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Finance Lease, Discount Rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeFinanceLeaseDiscountRate" xlink:to="us-gaap_LesseeFinanceLeaseDiscountRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonShares" xlink:label="us-gaap_TreasuryStockCommonShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TreasuryStockCommonShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Treasury stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TreasuryStockCommonShares" xlink:to="us-gaap_TreasuryStockCommonShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeFinanceLeaseTermOfContract1</link:label>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Finance Lease, Term of Contract (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:to="us-gaap_LesseeFinanceLeaseTermOfContract1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:label="us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseRenewalTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LesseeFinanceLeaseRenewalTerm1</link:label>
    <link:label xlink:label="us-gaap_LesseeFinanceLeaseRenewalTerm1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Finance Lease, Renewal Term (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:to="us-gaap_LesseeFinanceLeaseRenewalTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, $.01 par value, authorized 50,000 shares; 7,978 issued and outstanding at July 31, 2024 and 8,017 at January 31, 2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockValue" xlink:to="us-gaap_CommonStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesAuthorized" xlink:to="us-gaap_CommonStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesIssued" xlink:to="us-gaap_CommonStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:label="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fixed assets acquired from non affiliates - non-cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:to="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAxis" xlink:label="srt_RestatementAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_RestatementAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revision of Prior Period [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RestatementAxis" xlink:to="srt_RestatementAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementDomain" xlink:label="srt_RestatementDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_RestatementDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revision of Prior Period [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RestatementDomain" xlink:to="srt_RestatementDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CommonStockCapitalSharesReservedForFutureIssuance</link:label>
    <link:label xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Common Stock, Capital Shares Reserved for Future Issuance (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAdjustmentMember" xlink:label="srt_RestatementAdjustmentMember" xlink:type="locator"/>
    <link:label xlink:label="srt_RestatementAdjustmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revision of Prior Period, Adjustment [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RestatementAdjustmentMember" xlink:to="srt_RestatementAdjustmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeMember" xlink:to="srt_RangeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeasePayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating cash outflows from operating leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeasePayments" xlink:to="us-gaap_OperatingLeasePayments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MaximumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Maximum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MaximumMember" xlink:to="srt_MaximumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MinimumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Minimum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MinimumMember" xlink:to="srt_MinimumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_WeightedAverageMember" xlink:label="srt_WeightedAverageMember" xlink:type="locator"/>
    <link:label xlink:label="srt_WeightedAverageMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted Average [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_WeightedAverageMember" xlink:to="srt_WeightedAverageMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_OwnershipDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Ownership [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_OwnershipDomain" xlink:to="srt_OwnershipDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductOrServiceAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductOrServiceAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductsAndServicesDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductsAndServicesDomain" xlink:to="srt_ProductsAndServicesDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeAxis" xlink:to="srt_RangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating cash outflows from finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipAxis" xlink:label="srt_OwnershipAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_OwnershipAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Ownership [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Costs and estimated earnings in excess of billings on uncompleted contracts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestPaidNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash interest paid</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestPaidNet" xlink:to="us-gaap_InterestPaidNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryNet-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CentralBankOfEqyptCbeRateMember" xlink:label="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_CentralBankOfEqyptCbeRateMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Central Bank of Eqypt (CBE) Rate [Member]</link:label>
    <link:label xlink:label="ppih_CentralBankOfEqyptCbeRateMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents CBE rate.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CentralBankOfEqyptCbeRateMember" xlink:to="ppih_CentralBankOfEqyptCbeRateMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryWorkInProcess-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Work in process</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryWorkInProcess" xlink:to="us-gaap_InventoryWorkInProcess-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sales by product</link:label>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Net sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryValuationReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Less allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryValuationReserves" xlink:to="us-gaap_InventoryValuationReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryFinishedGoods" xlink:label="us-gaap_InventoryFinishedGoods" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryFinishedGoods-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finished goods</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryFinishedGoods" xlink:to="us-gaap_InventoryFinishedGoods-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InventoryGross</link:label>
    <link:label xlink:label="us-gaap_InventoryGross-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Subtotal</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryRawMaterials-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Raw materials</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryRawMaterials" xlink:to="us-gaap_InventoryRawMaterials-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestIncomeExpenseNet" xlink:label="us-gaap_InterestIncomeExpenseNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InterestIncomeExpenseNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InterestIncomeExpenseNet</link:label>
    <link:label xlink:label="us-gaap_InterestIncomeExpenseNet-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Interest expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InterestIncomeExpenseNet" xlink:to="us-gaap_InterestIncomeExpenseNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnbilledReceivablesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unbilled accounts receivable</link:label>
    <link:label xlink:label="us-gaap_UnbilledReceivablesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Unbilled Receivables, Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnbilledReceivablesCurrent" xlink:to="us-gaap_UnbilledReceivablesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsReceivableNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade accounts receivable, less allowance for credit losses of $713 at July 31, 2024 and $699 at January 31, 2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsReceivableNetCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NumberOfReportableSegments" xlink:label="us-gaap_NumberOfReportableSegments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NumberOfReportableSegments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NumberOfReportableSegments</link:label>
    <link:label xlink:label="us-gaap_NumberOfReportableSegments-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Number of Reportable Segments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NumberOfReportableSegments" xlink:to="us-gaap_NumberOfReportableSegments-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredOnUncompletedContracts" xlink:label="ppih_CostsIncurredOnUncompletedContracts" xlink:type="locator"/>
    <link:label xlink:label="ppih_CostsIncurredOnUncompletedContracts-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Costs incurred on uncompleted contracts</link:label>
    <link:label xlink:label="ppih_CostsIncurredOnUncompletedContracts-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Costs incurred on uncompleted contracts related to percentage of completion</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CostsIncurredOnUncompletedContracts" xlink:to="ppih_CostsIncurredOnUncompletedContracts-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapital" xlink:label="us-gaap_AdditionalPaidInCapital" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapital-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional paid-in capital</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapital" xlink:to="us-gaap_AdditionalPaidInCapital-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsInExcessOfBillingsNet" xlink:label="ppih_CostsInExcessOfBillingsNet" xlink:type="locator"/>
    <link:label xlink:label="ppih_CostsInExcessOfBillingsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Costs in excess of billings, net</link:label>
    <link:label xlink:label="ppih_CostsInExcessOfBillingsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Costs in excess of billings, net</link:label>
    <link:label xlink:label="ppih_CostsInExcessOfBillingsNet-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Costs in excess of billings, net related to percentage of completion</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CostsInExcessOfBillingsNet" xlink:to="ppih_CostsInExcessOfBillingsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_BillingsToDate" xlink:label="ppih_BillingsToDate" xlink:type="locator"/>
    <link:label xlink:label="ppih_BillingsToDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Less billings to date</link:label>
    <link:label xlink:label="ppih_BillingsToDate-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Billings to date related to percentage of completion</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_BillingsToDate" xlink:to="ppih_BillingsToDate-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EarnedRevenue" xlink:label="ppih_EarnedRevenue" xlink:type="locator"/>
    <link:label xlink:label="ppih_EarnedRevenue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_EarnedRevenue</link:label>
    <link:label xlink:label="ppih_EarnedRevenue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Earned revenue</link:label>
    <link:label xlink:label="ppih_EarnedRevenue-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of earned revenue.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_EarnedRevenue" xlink:to="ppih_EarnedRevenue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EstimatedEarnings" xlink:label="ppih_EstimatedEarnings" xlink:type="locator"/>
    <link:label xlink:label="ppih_EstimatedEarnings-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Estimated earnings</link:label>
    <link:label xlink:label="ppih_EstimatedEarnings-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Estimated earnings related to percentage of completion</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_EstimatedEarnings" xlink:to="ppih_EstimatedEarnings-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stockholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other (expense) income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNonoperatingIncomeExpense" xlink:to="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Lived Tangible Asset [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashCurrent" xlink:label="us-gaap_RestrictedCashCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedCashCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restricted cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedCashCurrent" xlink:to="us-gaap_RestrictedCashCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Land and Buildings in Lebanon, Tennessee [Member]</link:label>
    <link:label xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the sale leaseback transaction in connection with the land and buildings in Lebanon, Tennessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeaseObligationsMember" xlink:label="ppih_FinanceLeaseObligationsMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_FinanceLeaseObligationsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance Lease Obligations [Member]</link:label>
    <link:label xlink:label="ppih_FinanceLeaseObligationsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents finance lease obligation.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_FinanceLeaseObligationsMember" xlink:to="ppih_FinanceLeaseObligationsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueDisclosuresTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueDisclosuresTextBlock" xlink:to="us-gaap_FairValueDisclosuresTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Non-controlling interest</link:label>
    <link:label xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Redeemable Noncontrolling Interest, Equity, Carrying Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Cash, cash equivalents and restricted cash shown in the statement of cash flows</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Cash, cash equivalents and restricted cash - beginning of period</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Cash, cash equivalents and restricted cash - end of period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net increase in cash, cash equivalents and restricted cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Liabilities</link:label>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_Liabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInFinancingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommitmentsAndContingencies-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commitments and contingencies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommitmentsAndContingencies" xlink:to="us-gaap_CommitmentsAndContingencies-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Effect of exchange rate changes on cash, cash equivalents and restricted cash</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingLinesNorthAmericaMember" xlink:label="ppih_RevolvingLinesNorthAmericaMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingLinesNorthAmericaMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Lines, North America [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingLinesNorthAmericaMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to revolving lines in North America.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingLinesNorthAmericaMember" xlink:to="ppih_RevolvingLinesNorthAmericaMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingIncomeLoss</link:label>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income from operations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInOperatingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInInvestingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CostOfRevenue" xlink:label="us-gaap_CostOfRevenue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfRevenue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfRevenue" xlink:to="us-gaap_CostOfRevenue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GrossProfit</link:label>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Gross profit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_GrossProfit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BaseRateMember" xlink:label="us-gaap_BaseRateMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BaseRateMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Base Rate [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BaseRateMember" xlink:to="us-gaap_BaseRateMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ContractWithCustomerLiability</link:label>
    <link:label xlink:label="us-gaap_ContractWithCustomerLiability-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ContractWithCustomerLiability" xlink:to="us-gaap_ContractWithCustomerLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CanadianMortgageNoteMember" xlink:label="ppih_CanadianMortgageNoteMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_CanadianMortgageNoteMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Canadian Mortgage Note [Member]</link:label>
    <link:label xlink:label="ppih_CanadianMortgageNoteMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to a mortgage note from a bank in Canada, secured by a Canadian manufacturing facility.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CanadianMortgageNoteMember" xlink:to="ppih_CanadianMortgageNoteMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EIBORMember" xlink:label="ppih_EIBORMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_EIBORMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">EIBOR [Member]</link:label>
    <link:label xlink:label="ppih_EIBORMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to the Emirates Inter Bank Offered Rate.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_EIBORMember" xlink:to="ppih_EIBORMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ForeignRevolvingLinesMember" xlink:label="ppih_ForeignRevolvingLinesMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_ForeignRevolvingLinesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Foreign Revolving Lines [Member]</link:label>
    <link:label xlink:label="ppih_ForeignRevolvingLinesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to foreign revolving credit facilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_ForeignRevolvingLinesMember" xlink:to="ppih_ForeignRevolvingLinesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesAxis" xlink:label="srt_ConsolidatedEntitiesAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidatedEntitiesAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidated Entities [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidatedEntitiesDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidated Entities [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidatedEntitiesDomain" xlink:to="srt_ConsolidatedEntitiesDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Mortgage Note Secured by Tennessee Manufacturing Facility [Member]</link:label>
    <link:label xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to a mortgage note secured by a manufacturing facility in Lebanon, Tennessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:to="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LettersOfCreditOutstandingAmount</link:label>
    <link:label xlink:label="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Letters of Credit Outstanding, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LettersOfCreditOutstandingAmount" xlink:to="us-gaap_LettersOfCreditOutstandingAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UndistributedEarningsOfForeignSubsidiaries</link:label>
    <link:label xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Undistributed Earnings of Foreign Subsidiaries</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsForRepurchaseOfCommonStock</link:label>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ScenarioUnspecifiedDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Scenario [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioUnspecifiedDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsMember" xlink:to="us-gaap_RetainedEarningsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:type="locator"/>
    <link:label xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount</link:label>
    <link:label xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Sale Leaseback Transaction, Annual Rental Payments, Amount</link:label>
    <link:label xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of cash outflow from leaseback transactions.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:to="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_StatementScenarioAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Scenario [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_StatementScenarioAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonMember" xlink:label="us-gaap_TreasuryStockCommonMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TreasuryStockCommonMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Treasury Stock, Common [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TreasuryStockCommonMember" xlink:to="us-gaap_TreasuryStockCommonMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalMember" xlink:to="us-gaap_AdditionalPaidInCapitalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockMember" xlink:to="us-gaap_CommonStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtAndCapitalLeaseObligations" xlink:label="us-gaap_DebtAndCapitalLeaseObligations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtAndCapitalLeaseObligations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtAndCapitalLeaseObligations</link:label>
    <link:label xlink:label="us-gaap_DebtAndCapitalLeaseObligations-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt and Lease Obligation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtAndCapitalLeaseObligations" xlink:to="us-gaap_DebtAndCapitalLeaseObligations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementEquityComponentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_StatementEquityComponentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquityComponentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_EquityComponentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNoncurrentAssetsMember" xlink:label="us-gaap_OtherNoncurrentAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNoncurrentAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Noncurrent Assets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNoncurrentAssetsMember" xlink:to="us-gaap_OtherNoncurrentAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesPayable" xlink:label="us-gaap_NotesPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NotesPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NotesPayable</link:label>
    <link:label xlink:label="us-gaap_NotesPayable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes Payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NotesPayable" xlink:to="us-gaap_NotesPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income before income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityCapitalExpendituresRestrictions</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Capital Expenditures Restrictions</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Maximum amount of capital expenditures allowed under a credit agreement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:to="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive income (loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:label="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:type="locator"/>
    <link:label xlink:label="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock issued under stock plans, net of shares used for tax withholding</link:label>
    <link:label xlink:label="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of common stock issued under stock plans, net of shares used for tax withholding.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:to="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfOtherDebt" xlink:label="us-gaap_RepaymentsOfOtherDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfOtherDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfOtherDebt</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfOtherDebt-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments of other debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfOtherDebt" xlink:to="us-gaap_RepaymentsOfOtherDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Timing of Transfer of Good or Service [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredFinanceCostsNet" xlink:label="us-gaap_DeferredFinanceCostsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredFinanceCostsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DeferredFinanceCostsNet</link:label>
    <link:label xlink:label="us-gaap_DeferredFinanceCostsNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Debt Issuance Costs, Net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredFinanceCostsNet" xlink:to="us-gaap_DeferredFinanceCostsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInCustomerDeposits1" xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:type="locator"/>
    <link:label xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_IncreaseDecreaseInCustomerDeposits1</link:label>
    <link:label xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Customers' deposits</link:label>
    <link:label xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The increase (decrease) during the period in customer deposits.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_IncreaseDecreaseInCustomerDeposits1" xlink:to="ppih_IncreaseDecreaseInCustomerDeposits1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TransferredAtPointInTimeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Transferred at Point in Time [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TransferredAtPointInTimeMember" xlink:to="us-gaap_TransferredAtPointInTimeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:type="locator"/>
    <link:label xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability</link:label>
    <link:label xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Costs and estimated earnings in excess of billings on uncompleted contracts</link:label>
    <link:label xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of increase (decrease) in contract assets and liabilities.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:to="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="locator"/>
    <link:label xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock options exercised and taxes paid related to restricted shares vested</link:label>
    <link:label xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the cash inflow (outflow) related to stock options exercised and taxes related to restricted shares vested.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:to="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SecuredDebt" xlink:label="us-gaap_SecuredDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SecuredDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SecuredDebt</link:label>
    <link:label xlink:label="us-gaap_SecuredDebt-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Secured Debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SecuredDebt" xlink:to="us-gaap_SecuredDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CustomerDepositsCurrent1" xlink:label="ppih_CustomerDepositsCurrent1" xlink:type="locator"/>
    <link:label xlink:label="ppih_CustomerDepositsCurrent1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customers' deposits</link:label>
    <link:label xlink:label="ppih_CustomerDepositsCurrent1-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The current portion of customer deposits.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CustomerDepositsCurrent1" xlink:to="ppih_CustomerDepositsCurrent1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disaggregation of Revenue [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Timing of Transfer of Good or Service [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from Contract with Customer [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BalanceSheetLocationAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position Location, Balance [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Common Stock Repurchase Restrictions</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Maximum amount of common stock repurchase allowed under credit agreement.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:to="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BalanceSheetLocationDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position Location, Balance [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BalanceSheetLocationDomain" xlink:to="us-gaap_BalanceSheetLocationDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityGuaranteedAmount" xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityGuaranteedAmount</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Guaranteed Amount</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of debt guaranteed under credit facility.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityGuaranteedAmount" xlink:to="ppih_LineOfCreditFacilityGuaranteedAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentQuarterlyReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Quarterly Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentQuarterlyReport" xlink:to="dei_DocumentQuarterlyReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityIncorporationStateCountryCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityIncorporationStateCountryCode" xlink:to="dei_EntityIncorporationStateCountryCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingPoliciesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentTransitionReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Transition Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentTransitionReport" xlink:to="dei_DocumentTransitionReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityInteractiveDataCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityInteractiveDataCurrent" xlink:to="dei_EntityInteractiveDataCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RelatedPartyMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Related Party [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RelatedPartyMember" xlink:to="us-gaap_RelatedPartyMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:type="locator"/>
    <link:label xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Current maturities of long-term debt</link:label>
    <link:label xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine</link:label>
    <link:label xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-term Debt, Current Maturities, Excluding North American Revolving Line</link:label>
    <link:label xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount, after unamortized (discount) premium and debt issuance costs, of long-term debt, classified as current, excluding north american revolving lines of credit.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfSecuredDebt" xlink:label="us-gaap_RepaymentsOfSecuredDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfSecuredDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfSecuredDebt</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfSecuredDebt-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Repayments of Secured Debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfSecuredDebt" xlink:to="us-gaap_RepaymentsOfSecuredDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:label xlink:label="dei_SecurityExchangeName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityExchangeName" xlink:to="dei_SecurityExchangeName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:label xlink:label="dei_Security12bTitle-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12bTitle" xlink:to="dei_Security12bTitle-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:label="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Billing Status, Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:to="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ReceivablesBillingStatusDomain" xlink:label="us-gaap_ReceivablesBillingStatusDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReceivablesBillingStatusDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Receivables Billing Status [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReceivablesBillingStatusDomain" xlink:to="us-gaap_ReceivablesBillingStatusDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledRevenuesMember" xlink:label="us-gaap_UnbilledRevenuesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnbilledRevenuesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unbilled Revenues [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnbilledRevenuesMember" xlink:to="us-gaap_UnbilledRevenuesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:type="locator"/>
    <link:label xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod</link:label>
    <link:label xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Costs Incurred for Uncompleted Contracts, Anticipated Collection Period (Year)</link:label>
    <link:label xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the duration of time within which costs incurred for uncompleted contracts are anticipated to be collected.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:to="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents revolving credit lines used by Saudi Arabian subsidiary.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:to="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SIBORMember" xlink:label="ppih_SIBORMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_SIBORMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">SIBOR [Member]</link:label>
    <link:label xlink:label="ppih_SIBORMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents Saudi Inter Bank Offered Rate.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SIBORMember" xlink:to="ppih_SIBORMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Dilutive effect of equity compensation plans (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:label="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ppih_LesseeOperatingAndFinanceLeasesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lessee, Operating and Finance Leases [Text Block]</link:label>
    <link:label xlink:label="ppih_LesseeOperatingAndFinanceLeasesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The entire disclosure for operating and finance leases of lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:to="ppih_LesseeOperatingAndFinanceLeasesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeasesAssetsMember" xlink:label="ppih_FinanceLeasesAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_FinanceLeasesAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance Leases Assets [Member]</link:label>
    <link:label xlink:label="ppih_FinanceLeasesAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information pertaining to finance leases assets.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_FinanceLeasesAssetsMember" xlink:to="ppih_FinanceLeasesAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:label="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental Balance Sheet Information Related to Leases [Table Text Block]</link:label>
    <link:label xlink:label="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of supplemental balance sheet information related to leases.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:to="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfLinesOfCredit</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments of debt on revolving credit lines</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfLinesOfCredit" xlink:to="us-gaap_RepaymentsOfLinesOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Weighted average common shares outstanding assuming full dilution (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance and Operating Lease, Liability, Maturity [Table Text Block]</link:label>
    <link:label xlink:label="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of finance and operating lease liability maturity.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:to="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted-average Lease Terms and Discount Rates [Table Text Block]</link:label>
    <link:label xlink:label="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of weighted-average lease terms and discount rates.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:to="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:label="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Supplemental Cash Flow Information Related Leases [Table Text Block]</link:label>
    <link:label xlink:label="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of supplemental cash flow information related leases.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:to="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromLinesOfCredit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from revolving credit lines</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromLinesOfCredit" xlink:to="us-gaap_ProceedsFromLinesOfCredit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:label="us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MinorityInterestOwnershipPercentageByParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_MinorityInterestOwnershipPercentageByParent</link:label>
    <link:label xlink:label="us-gaap_MinorityInterestOwnershipPercentageByParent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Subsidiary, Ownership Percentage, Parent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:to="us-gaap_MinorityInterestOwnershipPercentageByParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EarningsPerShareDiluted</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareDiluted" xlink:to="us-gaap_EarningsPerShareDiluted-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Basic (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateContinuingOperations</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestDisclosureTextBlock" xlink:label="us-gaap_MinorityInterestDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MinorityInterestDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Noncontrolling Interest Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MinorityInterestDisclosureTextBlock" xlink:to="us-gaap_MinorityInterestDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:label="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Increase (decrease) in drafts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:to="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EarningsPerShareBasic</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareBasic" xlink:to="us-gaap_EarningsPerShareBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:type="locator"/>
    <link:label xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage</link:label>
    <link:label xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Finance Lease, Annual Rent Increase, Percentage</link:label>
    <link:label xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The percentage of annual rent increase on the finance lease of the lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:to="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfCashFlowsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementOfCashFlowsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:type="locator"/>
    <link:label xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LesseeFinanceLeaseNumberOfOptionsToExtend</link:label>
    <link:label xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Finance Lease, Number of Options to Extend</link:label>
    <link:label xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The number of options to extend the finance lease of the lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:to="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseContractualTermDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Contractual Term [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseContractualTermDomain" xlink:to="us-gaap_LeaseContractualTermDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:label="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration</link:label>
    <link:label xlink:label="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Disposal Group, Including Discontinued Operation, Consideration</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:to="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LeaseContractualTermAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Lease Contractual Term [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_IncomeStatementAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disposal Group Name [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disposal Group Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ProceedsFromIssuanceOfDebt</link:label>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfDebt-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Proceeds from Issuance of Debt</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIssuanceOfDebt" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations</link:label>
    <link:label xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Payments of principal on finance obligation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:to="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseInterestExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Interest on lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseInterestExpense" xlink:to="us-gaap_FinanceLeaseInterestExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityPaymentsDue</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total lease payments, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amortization of ROU assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability for Five Consecutive Days</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The minimum amount of undrawn availability for five consecutive days that will trigger the EBITDA ratio covenant of the line of credit facility.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2030, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The minimum amount of undrawn availability that triggers the EDITDA ratio covenant under the debt instrument.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Thereafter, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityDefaultAdditionalInterestRate</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Default, Additional Interest Rate</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of additional interest in the event of default of the line of credit facility.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:to="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount</link:label>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Less: amount representing interest, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2026, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2027, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2028, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the year ended January 31, 2029, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:label="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Step Acquisition, Equity Interest in Acquiree, Including Subsequent Acquisition, Percentage</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:to="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Standards Update and Change in Accounting Principle [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:to="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StockRepurchaseProgramAuthorizedAmount1" xlink:label="srt_StockRepurchaseProgramAuthorizedAmount1" xlink:type="locator"/>
    <link:label xlink:label="srt_StockRepurchaseProgramAuthorizedAmount1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">srt_StockRepurchaseProgramAuthorizedAmount1</link:label>
    <link:label xlink:label="srt_StockRepurchaseProgramAuthorizedAmount1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share Repurchase Program, Authorized, Amount</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StockRepurchaseProgramAuthorizedAmount1" xlink:to="srt_StockRepurchaseProgramAuthorizedAmount1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">For the six months ending January 31, 2025, finance leases</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrent" xlink:label="us-gaap_LiabilitiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesNoncurrent</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesNoncurrent" xlink:to="us-gaap_LiabilitiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance leases (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherLiabilitiesNoncurrent" xlink:to="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Lines Used by Middle Eastern Subsidiaries, 1 [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the first revolving credit line used by the Company's Middle Eastern subsidiaries.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="locator"/>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revolving Credit Lines Used by Middle Eastern Subsidiaries, 2 [Member]</link:label>
    <link:label xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the second revolving credit line used by the Company's Middle Eastern subsidiaries.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred compensation liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingLeaseAnnualPayment" xlink:label="ppih_LesseeOperatingLeaseAnnualPayment" xlink:type="locator"/>
    <link:label xlink:label="ppih_LesseeOperatingLeaseAnnualPayment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LesseeOperatingLeaseAnnualPayment</link:label>
    <link:label xlink:label="ppih_LesseeOperatingLeaseAnnualPayment-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Lessee, Operating Lease, Annual Payment</link:label>
    <link:label xlink:label="ppih_LesseeOperatingLeaseAnnualPayment-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of payment expected to be made per year under operating lease of lessee.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LesseeOperatingLeaseAnnualPayment" xlink:to="ppih_LesseeOperatingLeaseAnnualPayment-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AbuDhabiLandLeaseMember" xlink:label="ppih_AbuDhabiLandLeaseMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_AbuDhabiLandLeaseMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Abu Dhabi Land Lease [Member]</link:label>
    <link:label xlink:label="ppih_AbuDhabiLandLeaseMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information regarding land leased in Abu Dhabi.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_AbuDhabiLandLeaseMember" xlink:to="ppih_AbuDhabiLandLeaseMember-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:type="locator"/>
    <link:label xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Line of Credit Facility, Fixed Charge Coverage Ratio Required</link:label>
    <link:label xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the fixed charge coverage ratio required under a line of credit facility.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:to="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total stockholders' equity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_StockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NorthAmericanLoanPartiesMember" xlink:label="ppih_NorthAmericanLoanPartiesMember" xlink:type="locator"/>
    <link:label xlink:label="ppih_NorthAmericanLoanPartiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">North American Loan Parties [Member]</link:label>
    <link:label xlink:label="ppih_NorthAmericanLoanPartiesMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents information regarding certain U.S. and Canadian subsidiaries collectively referred to as the North American Loan Parties.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="ppih_NorthAmericanLoanPartiesMember" xlink:to="ppih_NorthAmericanLoanPartiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:label="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Assumptions for Long-Duration Contracts by Product and Guarantee [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:to="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementClassOfStockAxis" xlink:label="us-gaap_StatementClassOfStockAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementClassOfStockAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementClassOfStockAxis" xlink:to="us-gaap_StatementClassOfStockAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtNoncurrent" xlink:label="us-gaap_LongTermDebtNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermDebtNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term debt, less current maturities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermDebtNoncurrent" xlink:to="us-gaap_LongTermDebtNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermLoansPayable" xlink:label="us-gaap_LongTermLoansPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongTermLoansPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Loan payable to GIG</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongTermLoansPayable" xlink:to="us-gaap_LongTermLoansPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Outstanding, weighted average exercise price (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Outstanding, weighted average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-label" xlink:type="arc"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>9
<FILENAME>ppih-20240731_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 08:56PM UTC 2024-09-10--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-" xlink:href="ppih-20240731.xsd#statement-note-14-recent-accounting-pronouncements-" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-" xlink:href="ppih-20240731.xsd#statement-note-13-fair-value-" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:label="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_CashAndCashEquivalentsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories" xlink:href="ppih-20240731.xsd#statement-note-5-inventories" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-document-and-entity-information" xlink:href="ppih-20240731.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentQuarterlyReport" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:presentationArc order="24" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:presentationArc order="25" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:presentationArc order="26" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:presentationArc order="27" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:presentationArc order="28" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:href="ppih-20240731.xsd#statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonShares" xlink:label="us-gaap_TreasuryStockCommonShares" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TreasuryStockCommonShares" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation" xlink:href="ppih-20240731.xsd#statement-note-1-basis-of-presentation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting" xlink:href="ppih-20240731.xsd#statement-note-2-business-segment-reporting" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable" xlink:href="ppih-20240731.xsd#statement-note-3-accounts-receivable" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableMember" xlink:label="us-gaap_AccountsReceivableMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:label="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNoncurrentAssetsMember" xlink:label="us-gaap_OtherNoncurrentAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_OtherNoncurrentAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_AccountsReceivableMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:label="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes" xlink:href="ppih-20240731.xsd#statement-note-6-income-taxes" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PermaPipeCanadaLtdMember" xlink:label="ppih_PermaPipeCanadaLtdMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetImpairmentChargesTextBlock" xlink:label="us-gaap_AssetImpairmentChargesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="ppih_PermaPipeCanadaLtdMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_AssetImpairmentChargesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt" xlink:href="ppih-20240731.xsd#statement-note-10-debt" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-10-debt" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CanadianMortgageNoteMember" xlink:label="ppih_CanadianMortgageNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CentralBankOfEqyptCbeRateMember" xlink:label="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EIBORMember" xlink:label="ppih_EIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ForeignRevolvingLinesMember" xlink:label="ppih_ForeignRevolvingLinesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NorthAmericanLoanPartiesMember" xlink:label="ppih_NorthAmericanLoanPartiesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PromissoryNoteMember" xlink:label="ppih_PromissoryNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingLinesNorthAmericaMember" xlink:label="ppih_RevolvingLinesNorthAmericaMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SIBORMember" xlink:label="ppih_SIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SecuredOvernightFinancingRateSOFRMember" xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_WeightedAverageMember" xlink:label="srt_WeightedAverageMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BaseRateMember" xlink:label="us-gaap_BaseRateMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtDisclosureTextBlock" xlink:label="us-gaap_DebtDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="ppih_RevolvingLinesNorthAmericaMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_BaseRateMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="ppih_NorthAmericanLoanPartiesMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="ppih_ForeignRevolvingLinesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_EIBORMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_SIBORMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_WeightedAverageMember" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_PromissoryNoteMember" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_CanadianMortgageNoteMember" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DebtDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases" xlink:href="ppih-20240731.xsd#statement-note-11-leases" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AbuDhabiLandLeaseMember" xlink:label="ppih_AbuDhabiLandLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:label="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="ppih_AbuDhabiLandLeaseMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="ppih_LesseeOperatingAndFinanceLeasesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock" xlink:href="ppih-20240731.xsd#statement-note-15-treasury-stock" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockTextBlock" xlink:label="us-gaap_TreasuryStockTextBlock" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_TreasuryStockTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest" xlink:href="ppih-20240731.xsd#statement-note-16-noncontrolling-interest" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_GulfInsulationGroupMember" xlink:label="ppih_GulfInsulationGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_JointVentureMember" xlink:label="ppih_JointVentureMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NotesToFinancialStatementsAbstract" xlink:label="ppih_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesAxis" xlink:label="srt_ConsolidatedEntitiesAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipAxis" xlink:label="srt_OwnershipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestDisclosureTextBlock" xlink:label="us-gaap_MinorityInterestDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_OwnershipAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_OwnershipAxis" xlink:to="ppih_JointVentureMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidatedEntitiesAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_MinorityInterestDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#InsiderTradingArrangements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_InsiderTradingArrLineItems" xlink:label="ecd_InsiderTradingArrLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_MtrlTermsOfTrdArrTextBlock" xlink:label="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_NonRule10b51ArrAdoptedFlag" xlink:label="ecd_NonRule10b51ArrAdoptedFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_NonRule10b51ArrTrmntdFlag" xlink:label="ecd_NonRule10b51ArrTrmntdFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_Rule10b51ArrAdoptedFlag" xlink:label="ecd_Rule10b51ArrAdoptedFlag-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd#ecd_Rule10b51ArrTrmntdFlag" xlink:label="ecd_Rule10b51ArrTrmntdFlag-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_MtrlTermsOfTrdArrTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_Rule10b51ArrAdoptedFlag-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_NonRule10b51ArrAdoptedFlag-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_Rule10b51ArrTrmntdFlag-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ecd_InsiderTradingArrLineItems" xlink:to="ecd_NonRule10b51ArrTrmntdFlag-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies" xlink:href="ppih-20240731.xsd#statement-significant-accounting-policies-policies" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-significant-accounting-policies-policies" xlink:label="ppih_statement-statement-significant-accounting-policies-policies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:label="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-significant-accounting-policies-policies" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PolicyTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-tables" xlink:label="ppih_statement-statement-note-4-revenue-recognition-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:label="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-4-revenue-recognition-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables" xlink:href="ppih-20240731.xsd#statement-note-5-inventories-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-5-inventories-tables" xlink:label="ppih_statement-statement-note-5-inventories-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-5-inventories-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-7-impairment-of-longlived-assets-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:label="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-9-earnings-per-share-tables" xlink:label="ppih_statement-statement-note-9-earnings-per-share-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-9-earnings-per-share-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables" xlink:href="ppih-20240731.xsd#statement-note-11-leases-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:label="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:label="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:label="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:label="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-tables" xlink:label="ppih_statement-statement-note-11-leases-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCostTableTextBlock" xlink:label="us-gaap_LeaseCostTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LeaseCostTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-12-restricted-cash-tables" xlink:label="ppih_statement-statement-note-12-restricted-cash-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:label="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-12-restricted-cash-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual" xlink:href="ppih-20240731.xsd#statement-note-2-business-segment-reporting-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NumberOfReportableSegments" xlink:label="us-gaap_NumberOfReportableSegments-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NumberOfReportableSegments-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual" xlink:href="ppih-20240731.xsd#statement-note-3-accounts-receivable-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NumberOfMajorCustomers" xlink:label="ppih_NumberOfMajorCustomers-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableMember" xlink:label="us-gaap_AccountsReceivableMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNet" xlink:label="us-gaap_AccountsReceivableNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationAxis" xlink:label="us-gaap_BalanceSheetLocationAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BalanceSheetLocationDomain" xlink:label="us-gaap_BalanceSheetLocationDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskBenchmarkDomain" xlink:label="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:label="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskByTypeAxis" xlink:label="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ConcentrationRiskTypeDomain" xlink:label="us-gaap_ConcentrationRiskTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CustomerConcentrationRiskMember" xlink:label="us-gaap_CustomerConcentrationRiskMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:label="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:label="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-n2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNoncurrentAssetsMember" xlink:label="us-gaap_OtherNoncurrentAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SalesRevenueNetMember" xlink:label="us-gaap_SalesRevenueNetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_BalanceSheetLocationDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancingReceivablesPeriodPastDueAxis" xlink:to="us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BalanceSheetLocationAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BalanceSheetLocationAxis" xlink:to="us-gaap_OtherNoncurrentAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_SalesRevenueNetMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByTypeAxis" xlink:to="us-gaap_CustomerConcentrationRiskMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="us-gaap_AccountsReceivableMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccountsReceivableNet-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-n2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivable-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_NumberOfMajorCustomers-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod" xlink:label="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnbilledReceivablesCurrent-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual" xlink:href="ppih-20240731.xsd#statement-note-6-income-taxes-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UndistributedEarningsOfForeignSubsidiaries" xlink:label="us-gaap_UndistributedEarningsOfForeignSubsidiaries-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UndistributedEarningsOfForeignSubsidiaries-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PermaPipeCanadaLtdMember" xlink:label="ppih_PermaPipeCanadaLtdMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage" xlink:label="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="ppih_PermaPipeCanadaLtdMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockCapitalSharesReservedForFutureIssuance" xlink:label="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockCapitalSharesReservedForFutureIssuance-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual" xlink:href="ppih-20240731.xsd#statement-note-10-debt-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:label="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CanadianMortgageNoteMember" xlink:label="ppih_CanadianMortgageNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CentralBankOfEqyptCbeRateMember" xlink:label="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EIBORMember" xlink:label="ppih_EIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ForeignRevolvingLinesMember" xlink:label="ppih_ForeignRevolvingLinesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage" xlink:label="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeFinanceLeaseNumberOfOptionsToExtend" xlink:label="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCapitalExpendituresRestrictions" xlink:label="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions" xlink:label="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays" xlink:label="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityDefaultAdditionalInterestRate" xlink:label="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired" xlink:label="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LineOfCreditFacilityGuaranteedAmount" xlink:label="ppih_LineOfCreditFacilityGuaranteedAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:label="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NorthAmericanLoanPartiesMember" xlink:label="ppih_NorthAmericanLoanPartiesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PromissoryNoteMember" xlink:label="ppih_PromissoryNoteMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:label="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:label="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:label="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_RevolvingLinesNorthAmericaMember" xlink:label="ppih_RevolvingLinesNorthAmericaMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SIBORMember" xlink:label="ppih_SIBORMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount" xlink:label="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SecuredOvernightFinancingRateSOFRMember" xlink:label="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_WeightedAverageMember" xlink:label="srt_WeightedAverageMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_BaseRateMember" xlink:label="us-gaap_BaseRateMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityAxis" xlink:label="us-gaap_CreditFacilityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CreditFacilityDomain" xlink:label="us-gaap_CreditFacilityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtAndCapitalLeaseObligations" xlink:label="us-gaap_DebtAndCapitalLeaseObligations-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentAxis" xlink:label="us-gaap_DebtInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentBasisSpreadOnVariableRate1" xlink:label="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentFaceAmount" xlink:label="us-gaap_DebtInstrumentFaceAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateEffectivePercentage" xlink:label="us-gaap_DebtInstrumentInterestRateEffectivePercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentInterestRateStatedPercentage" xlink:label="us-gaap_DebtInstrumentInterestRateStatedPercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentMaturityDate" xlink:label="us-gaap_DebtInstrumentMaturityDate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentNameDomain" xlink:label="us-gaap_DebtInstrumentNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DebtInstrumentTerm" xlink:label="us-gaap_DebtInstrumentTerm-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredFinanceCostsNet" xlink:label="us-gaap_DeferredFinanceCostsNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration" xlink:label="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:label="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:label="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseDiscountRate" xlink:label="us-gaap_LesseeFinanceLeaseDiscountRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseRenewalTerm1" xlink:label="us-gaap_LesseeFinanceLeaseRenewalTerm1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LettersOfCreditOutstandingAmount" xlink:label="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd" xlink:label="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity" xlink:label="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage" xlink:label="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent" xlink:label="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromIssuanceOfDebt" xlink:label="us-gaap_ProceedsFromIssuanceOfDebt-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment" xlink:label="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfSecuredDebt" xlink:label="us-gaap_RepaymentsOfSecuredDebt-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SecuredDebt" xlink:label="us-gaap_SecuredDebt-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateAxis" xlink:label="us-gaap_VariableRateAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_VariableRateDomain" xlink:label="us-gaap_VariableRateDomain" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="us-gaap_DebtInstrumentNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="us-gaap_CreditFacilityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_VariableRateDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CreditFacilityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="ppih_RevolvingLinesNorthAmericaMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_VariableRateAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="us-gaap_BaseRateMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_SecuredOvernightFinancingRateSOFRMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="ppih_NorthAmericanLoanPartiesMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_DebtInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CreditFacilityAxis" xlink:to="ppih_ForeignRevolvingLinesMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_EIBORMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_CentralBankOfEqyptCbeRateMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_VariableRateAxis" xlink:to="ppih_SIBORMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_WeightedAverageMember" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_PromissoryNoteMember" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DebtInstrumentAxis" xlink:to="ppih_CanadianMortgageNoteMember" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtAndCapitalLeaseObligations-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentTerm-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentBasisSpreadOnVariableRate1-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCapitalExpendituresRestrictions-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityDefaultAdditionalInterestRate-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LinesOfCreditCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd-2" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity-2" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration-2" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment-2" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RepaymentsOfSecuredDebt-2" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseTermOfContract1-2" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount-2" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage-2" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeFinanceLeaseNumberOfOptionsToExtend-2" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseRenewalTerm1-2" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseDiscountRate-2" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="24" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="25" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-2" xlink:type="arc"/>
    <link:presentationArc order="26" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity-2" xlink:type="arc"/>
    <link:presentationArc order="27" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LineOfCreditFacilityGuaranteedAmount-2" xlink:type="arc"/>
    <link:presentationArc order="28" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentInterestRateStatedPercentage-2" xlink:type="arc"/>
    <link:presentationArc order="29" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LettersOfCreditOutstandingAmount-2" xlink:type="arc"/>
    <link:presentationArc order="30" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProceedsFromIssuanceOfDebt-2" xlink:type="arc"/>
    <link:presentationArc order="31" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentFaceAmount-2" xlink:type="arc"/>
    <link:presentationArc order="32" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentMaturityDate-2" xlink:type="arc"/>
    <link:presentationArc order="33" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SecuredDebt-2" xlink:type="arc"/>
    <link:presentationArc order="34" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DebtInstrumentInterestRateEffectivePercentage-2" xlink:type="arc"/>
    <link:presentationArc order="35" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DeferredFinanceCostsNet-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual" xlink:href="ppih-20240731.xsd#statement-note-11-leases-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AbuDhabiLandLeaseMember" xlink:label="ppih_AbuDhabiLandLeaseMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityCurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseLiabilityNoncurrent" xlink:label="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_DecreaseInOperatingLeaseRightofuseAsset" xlink:label="ppih_DecreaseInOperatingLeaseRightofuseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LesseeOperatingLeaseAnnualPayment" xlink:label="ppih_LesseeOperatingLeaseAnnualPayment-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermAxis" xlink:label="us-gaap_LeaseContractualTermAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseContractualTermDomain" xlink:label="us-gaap_LeaseContractualTermDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeFinanceLeaseTermOfContract1" xlink:label="us-gaap_LesseeFinanceLeaseTermOfContract1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseExpense" xlink:label="us-gaap_OperatingLeaseExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="us-gaap_LeaseContractualTermDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LeaseContractualTermAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LeaseContractualTermAxis" xlink:to="ppih_AbuDhabiLandLeaseMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_LesseeOperatingLeaseAnnualPayment-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseLiabilityNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_DecreaseInOperatingLeaseRightofuseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeFinanceLeaseTermOfContract1-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseExpense-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual" xlink:href="ppih-20240731.xsd#statement-note-15-treasury-stock-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed" xlink:label="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_StockRepurchaseProgramAuthorizedAmount1" xlink:label="srt_StockRepurchaseProgramAuthorizedAmount1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockRepurchasedDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedDuringPeriodShares-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="srt_StockRepurchaseProgramAuthorizedAmount1-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedDuringPeriodShares-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual" xlink:href="ppih-20240731.xsd#statement-note-16-noncontrolling-interest-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_GulfInsulationGroupMember" xlink:label="ppih_GulfInsulationGroupMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_JointVentureMember" xlink:label="ppih_JointVentureMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_NoteToFinancialStatementDetailsTextual" xlink:label="ppih_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesAxis" xlink:label="srt_ConsolidatedEntitiesAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ConsolidatedEntitiesDomain" xlink:label="srt_ConsolidatedEntitiesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipAxis" xlink:label="srt_OwnershipAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_OwnershipDomain" xlink:label="srt_OwnershipDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_MinorityInterestOwnershipPercentageByParent" xlink:label="us-gaap_MinorityInterestOwnershipPercentageByParent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination" xlink:label="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesPayable" xlink:label="us-gaap_NotesPayable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NotesReceivableNet" xlink:label="us-gaap_NotesReceivableNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentFairValueDisclosure" xlink:label="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_OwnershipAxis" xlink:to="srt_OwnershipDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="srt_ConsolidatedEntitiesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_OwnershipAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_OwnershipAxis" xlink:to="ppih_JointVentureMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidatedEntitiesAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidatedEntitiesAxis" xlink:to="ppih_GulfInsulationGroupMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_MinorityInterestOwnershipPercentageByParent-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentFairValueDisclosure-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NotesPayable-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NotesReceivableNet-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Assets-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Liabilities-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited" xlink:type="extended">
    <link:loc xlink:href="ppih-20240731.xsd#ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:label="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:label="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TreasuryStockValueAcquired" xlink:label="ppih_TreasuryStockValueAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAdjustmentMember" xlink:label="srt_RestatementAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementAxis" xlink:label="srt_RestatementAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_RestatementDomain" xlink:label="srt_RestatementDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharesOutstanding" xlink:label="us-gaap_SharesOutstanding-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonMember" xlink:label="us-gaap_TreasuryStockCommonMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockValueAcquiredCostMethod" xlink:label="us-gaap_TreasuryStockValueAcquiredCostMethod-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_TreasuryStockCommonMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RestatementAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RestatementAxis" xlink:to="srt_RestatementAdjustmentMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RestatementAxis" xlink:to="srt_RestatementDomain" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_TreasuryStockValueAcquired" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TreasuryStockValueAcquiredCostMethod-n8" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding-4" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharesOutstanding-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_BillingsToDate" xlink:label="ppih_BillingsToDate" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsInExcessOfBillingsNet" xlink:label="ppih_CostsInExcessOfBillingsNet" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsInExcessOfBillingsNet" xlink:label="ppih_CostsInExcessOfBillingsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CostsIncurredOnUncompletedContracts" xlink:label="ppih_CostsIncurredOnUncompletedContracts" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EarnedRevenue" xlink:label="ppih_EarnedRevenue-3" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_EstimatedEarnings" xlink:label="ppih_EstimatedEarnings" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:label="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNet" xlink:label="us-gaap_ContractWithCustomerAssetNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiability" xlink:label="us-gaap_ContractWithCustomerLiability-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsIncurredOnUncompletedContracts" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_EstimatedEarnings" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_EarnedRevenue-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_BillingsToDate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsInExcessOfBillingsNet" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerAssetNet-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ContractWithCustomerLiability-n9" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_CostsInExcessOfBillingsNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:href="ppih-20240731.xsd#statement-note-5-inventories-schedule-of-inventory-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:label="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryFinishedGoods" xlink:label="us-gaap_InventoryFinishedGoods" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryRawMaterials" xlink:label="us-gaap_InventoryRawMaterials" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryWorkInProcess" xlink:label="us-gaap_InventoryWorkInProcess" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-5-inventories-schedule-of-inventory-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryRawMaterials" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryWorkInProcess" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryFinishedGoods" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:href="ppih-20240731.xsd#statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:label="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1" xlink:label="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber-5" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:label="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes" xlink:label="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-n8" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber-5" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:label="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDue" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:label="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo-1" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree-1" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour-1" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive-1" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive-1" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityPaymentsDue-3" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount-n8" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:href="ppih-20240731.xsd#statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:label="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashAndCashEquivalents" xlink:label="us-gaap_RestrictedCashAndCashEquivalents-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RestrictedCashAndCashEquivalents-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeaseObligationsMember" xlink:label="ppih_FinanceLeaseObligationsMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability" xlink:label="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_IncreaseDecreaseInCustomerDeposits1" xlink:label="ppih_IncreaseDecreaseInCustomerDeposits1-2" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:label="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:label="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:label="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:label="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GainLossOnDispositionOfAssets" xlink:label="us-gaap_GainLossOnDispositionOfAssets-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxesPaidNet" xlink:label="us-gaap_IncomeTaxesPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables" xlink:label="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities" xlink:label="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable" xlink:label="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:label="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestPaidNet" xlink:label="us-gaap_InterestPaidNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeAxis" xlink:label="us-gaap_LongtermDebtTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongtermDebtTypeDomain" xlink:label="us-gaap_LongtermDebtTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:label="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:label="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProceedsFromLinesOfCredit" xlink:label="us-gaap_ProceedsFromLinesOfCredit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProvisionForDoubtfulAccounts" xlink:label="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ReceivablesBillingStatusDomain" xlink:label="us-gaap_ReceivablesBillingStatusDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations" xlink:label="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfLinesOfCredit" xlink:label="us-gaap_RepaymentsOfLinesOfCredit-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RepaymentsOfOtherDebt" xlink:label="us-gaap_RepaymentsOfOtherDebt-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SupplementalCashFlowInformationAbstract" xlink:label="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledRevenuesMember" xlink:label="us-gaap_UnbilledRevenuesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:to="us-gaap_ReceivablesBillingStatusDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LongtermDebtTypeAxis" xlink:to="us-gaap_LongtermDebtTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis" xlink:to="us-gaap_UnbilledRevenuesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="ppih_LandAndBuildingsInLebanonTennesseeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_LongtermDebtTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LongtermDebtTypeAxis" xlink:to="ppih_FinanceLeaseObligationsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ProfitLoss-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxesAndTaxCredits" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ProvisionForDoubtfulAccounts" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_GainLossOnDispositionOfAssets-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-n9" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories-n9" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="ppih_IncreaseDecreaseInCustomerDeposits1-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n9" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables-n8" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet-n9" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromInsuranceSettlementInvestingActivities" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromLinesOfCredit" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfLinesOfCredit-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_RepaymentsOfOtherDebt-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SupplementalCashFlowInformationAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_InterestPaidNet" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_IncomeTaxesPaidNet" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_SupplementalCashFlowInformationAbstract" xlink:to="us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-operations-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CostOfRevenue" xlink:label="us-gaap_CostOfRevenue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InterestIncomeExpenseNet" xlink:label="us-gaap_InterestIncomeExpenseNet-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:label="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SellingExpense" xlink:label="us-gaap_SellingExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CostOfRevenue" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GrossProfit-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingExpense" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_InterestIncomeExpenseNet-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ProfitLoss-3" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLossAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProfitLoss" xlink:label="us-gaap_ProfitLoss-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:label="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ProfitLoss-1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:href="ppih-20240731.xsd#statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:label="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:href="ppih-20240731.xsd#statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:label="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:label="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:label="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic-1" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted-1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_FinanceLeasesAssetsMember" xlink:label="ppih_FinanceLeasesAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:label="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:label="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiability" xlink:label="us-gaap_FinanceLeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiability" xlink:label="us-gaap_OperatingLeaseLiability-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:label="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentGross" xlink:label="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:label="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="ppih_FinanceLeasesAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseLiability-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseLiability-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:label="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:label="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:label="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="ppih-20240731.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_CustomerDepositsCurrent1" xlink:label="ppih_CustomerDepositsCurrent1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtAndLeaseObligationNoncurrent" xlink:label="ppih_LongtermDebtAndLeaseObligationNoncurrent-1" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine" xlink:label="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedLiabilitiesCurrent" xlink:label="us-gaap_AccruedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccruedSalesCommissionCurrent" xlink:label="us-gaap_AccruedSalesCommissionCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AdditionalPaidInCapital" xlink:label="us-gaap_AdditionalPaidInCapital" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrent" xlink:label="us-gaap_AssetsNoncurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_AssetsNoncurrentAbstract" xlink:label="us-gaap_AssetsNoncurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommitmentsAndContingencies" xlink:label="us-gaap_CommitmentsAndContingencies" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerAssetNetCurrent" xlink:label="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ContractWithCustomerLiabilityCurrent" xlink:label="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:label="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxAssetsNet" xlink:label="us-gaap_DeferredIncomeTaxAssetsNet-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrent" xlink:label="us-gaap_LiabilitiesNoncurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LiabilitiesNoncurrentAbstract" xlink:label="us-gaap_LiabilitiesNoncurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LinesOfCreditCurrent" xlink:label="us-gaap_LinesOfCreditCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermDebtNoncurrent" xlink:label="us-gaap_LongTermDebtNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LongTermLoansPayable" xlink:label="us-gaap_LongTermLoansPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:label="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyDomain" xlink:label="us-gaap_RelatedPartyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyMember" xlink:label="us-gaap_RelatedPartyMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:label="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RestrictedCashCurrent" xlink:label="us-gaap_RestrictedCashCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TreasuryStockCommonValue" xlink:label="us-gaap_TreasuryStockCommonValue-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_UnbilledReceivablesCurrent" xlink:label="us-gaap_UnbilledReceivablesCurrent" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RelatedPartyTransactionsByRelatedPartyAxis" xlink:to="us-gaap_RelatedPartyMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_RestrictedCashCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_UnbilledReceivablesCurrent" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerAssetNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsNoncurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxAssetsNet-1" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_AssetsNoncurrent-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsNoncurrentAbstract" xlink:to="us-gaap_Assets-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedSalesCommissionCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LinesOfCreditCurrent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine-1" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="ppih_CustomerDepositsCurrent1" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesNoncurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LongTermDebtNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="ppih_LongtermDebtAndLeaseObligationNoncurrent-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LongTermLoansPayable" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_LiabilitiesNoncurrent-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesNoncurrentAbstract" xlink:to="us-gaap_CommitmentsAndContingencies" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapital" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_TreasuryStockCommonValue-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:href="ppih-20240731.xsd#statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:label="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:label="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:label="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ProductMember" xlink:label="us-gaap_ProductMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:label="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_TransferredAtPointInTimeMember" xlink:label="us-gaap_TransferredAtPointInTimeMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="us-gaap_ProductMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="us-gaap_TransferredAtPointInTimeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="ppih_SpecialtyPipingSystemsAndCoatingMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="ppih_TransferredAtPointInTimeUsingInputMethodMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TimingOfTransferOfGoodOrServiceAxis" xlink:to="ppih_TransferredAtPointInTimeUsingOutputMethodMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:label="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:label="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeasePayments" xlink:label="us-gaap_OperatingLeasePayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:label="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestPaymentOnLiability" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeasePayments" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:href="ppih-20240731.xsd#statement-note-11-leases-lease-costs-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2024/dei-2024.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="ppih-20240731.xsd#ppih_statement-statement-note-11-leases-lease-costs-details" xlink:label="ppih_statement-statement-note-11-leases-lease-costs-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseInterestExpense" xlink:label="us-gaap_FinanceLeaseInterestExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:label="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_LeaseCost" xlink:label="us-gaap_LeaseCost-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_OperatingLeaseCost" xlink:label="us-gaap_OperatingLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_ShortTermLeaseCost" xlink:label="us-gaap_ShortTermLeaseCost" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd#us-gaap_SubleaseIncome" xlink:label="us-gaap_SubleaseIncome-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="ppih_statement-statement-note-11-leases-lease-costs-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseRightOfUseAssetAmortization" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinanceLeaseInterestExpense" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingLeaseCost" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShortTermLeaseCost" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SubleaseIncome-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LeaseCost-3" xlink:type="arc"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>10
<FILENAME>logo.jpg
<TEXT>
begin 644 logo.jpg
M_]C_X  02D9)1@ ! 0$ 8 !@  #_X0!:17AI9@  34T *@    @ !0,!  4
M   !    2@,#  $    !     %$0  $    ! 0   %$1  0    !   .Q%$2
M  0    !   .Q        8:@  "QC__; $,  @$! @$! @(" @(" @(#!0,#
M P,#!@0$ P4'!@<'!P8'!P@)"PD(" H(!P<*#0H*"PP,# P'"0X/#0P."PP,
M#/_; $,! @(" P,#!@,#!@P(!P@,# P,# P,# P,# P,# P,# P,# P,# P,
M# P,# P,# P,# P,# P,# P,# P,# P,#/_  !$( "4 UP,!(@ "$0$#$0'_
MQ  ?   !!0$! 0$! 0           0(#! 4&!P@)"@O_Q "U$  " 0,# @0#
M!04$!    7T! @, !!$%$B$Q008346$'(G$4,H&1H0@C0K'!%5+1\"0S8G*"
M"0H6%Q@9&B4F)R@I*C0U-C<X.3I#1$5&1TA)2E-455976%E:8V1E9F=H:6IS
M='5V=WAY>H.$A8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$
MQ<;'R,G*TM/4U=;7V-G:X>+CY.7FY^CIZO'R\_3U]O?X^?K_Q  ? 0 # 0$!
M 0$! 0$!         0(#! 4&!P@)"@O_Q "U$0 " 0($! ,$!P4$!  ! G<
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
MT45V8KB;,\13]E5K.WE97];)7^9R4<EP5&7/"FK^=W^=SZ?HHHKPSU HHHH
J**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** /_9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>12
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196103072">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Document And Entity Information - shares<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Sep. 11, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentInformationLineItems', window );"><strong>Document Information [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0000914122<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">Perma-Pipe International Holdings, Inc.<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--01-31<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">Q2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2024<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-Q<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentQuarterlyReport', window );">Document Quarterly Report</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Jul. 31,  2024<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-32530<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">DE<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">36-3922969<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">24900 Pitkin Road, Suite 309<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Spring<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">TX<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">77386<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">847<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">966-1000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock, $.01 par value per share<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">PPIH<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NASDAQ<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Non-accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,977,853<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CurrentFiscalYearEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>End date of current fiscal year in the format --MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CurrentFiscalYearEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gMonthDayItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalPeriodFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalPeriodFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fiscalPeriodItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalYearFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalYearFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentInformationLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentInformationLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentQuarterlyReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as an quarterly report.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-Q<br> -Number 240<br> -Section 308<br> -Subsection a<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentQuarterlyReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentTransitionReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as a transition report.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentTransitionReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCurrentReportingStatus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFilerCategory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFilerCategory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:filerCategoryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityInteractiveDataCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-T<br> -Number 232<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityInteractiveDataCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityShellCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityShellCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntitySmallBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Indicates that the company is a Smaller Reporting Company (SRC).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntitySmallBusiness</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>13
<FILENAME>R2.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196113920">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Operations (Unaudited) - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Net sales</a></td>
<td class="nump">$ 37,513<span></span>
</td>
<td class="nump">$ 35,141<span></span>
</td>
<td class="nump">$ 71,834<span></span>
</td>
<td class="nump">$ 64,798<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CostOfRevenue', window );">Cost of sales</a></td>
<td class="nump">24,039<span></span>
</td>
<td class="nump">25,677<span></span>
</td>
<td class="nump">47,843<span></span>
</td>
<td class="nump">48,559<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">13,474<span></span>
</td>
<td class="nump">9,464<span></span>
</td>
<td class="nump">23,991<span></span>
</td>
<td class="nump">16,239<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingExpensesAbstract', window );"><strong>Operating expenses</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GeneralAndAdministrativeExpense', window );">General and administrative expenses</a></td>
<td class="nump">5,979<span></span>
</td>
<td class="nump">5,283<span></span>
</td>
<td class="nump">12,128<span></span>
</td>
<td class="nump">10,742<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SellingExpense', window );">Selling expenses</a></td>
<td class="nump">1,353<span></span>
</td>
<td class="nump">1,490<span></span>
</td>
<td class="nump">2,588<span></span>
</td>
<td class="nump">2,730<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingExpenses', window );">Total operating expenses</a></td>
<td class="nump">7,332<span></span>
</td>
<td class="nump">6,773<span></span>
</td>
<td class="nump">14,716<span></span>
</td>
<td class="nump">13,472<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">6,142<span></span>
</td>
<td class="nump">2,691<span></span>
</td>
<td class="nump">9,275<span></span>
</td>
<td class="nump">2,767<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InterestIncomeExpenseNet', window );">Interest expense</a></td>
<td class="nump">514<span></span>
</td>
<td class="nump">636<span></span>
</td>
<td class="nump">1,021<span></span>
</td>
<td class="nump">1,148<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherNonoperatingIncomeExpense', window );">Other (expense) income</a></td>
<td class="num">(38)<span></span>
</td>
<td class="nump">81<span></span>
</td>
<td class="num">(105)<span></span>
</td>
<td class="nump">154<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">5,590<span></span>
</td>
<td class="nump">2,136<span></span>
</td>
<td class="nump">8,149<span></span>
</td>
<td class="nump">1,773<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense</a></td>
<td class="nump">1,306<span></span>
</td>
<td class="nump">966<span></span>
</td>
<td class="nump">2,076<span></span>
</td>
<td class="nump">1,725<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProfitLoss', window );">Net income</a></td>
<td class="nump">4,284<span></span>
</td>
<td class="nump">1,170<span></span>
</td>
<td class="nump">6,073<span></span>
</td>
<td class="nump">48<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLossAttributableToNoncontrollingInterest', window );">Less: Net income attributable to non-controlling interest</a></td>
<td class="nump">995<span></span>
</td>
<td class="nump">148<span></span>
</td>
<td class="nump">1,341<span></span>
</td>
<td class="nump">148<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income (loss) attributable to common stock</a></td>
<td class="nump">$ 3,289<span></span>
</td>
<td class="nump">$ 1,022<span></span>
</td>
<td class="nump">$ 4,732<span></span>
</td>
<td class="num">$ (100)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract', window );"><strong>Weighted average common shares outstanding</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">7,954<span></span>
</td>
<td class="nump">8,029<span></span>
</td>
<td class="nump">7,930<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="nump">8,125<span></span>
</td>
<td class="nump">8,139<span></span>
</td>
<td class="nump">7,987<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings (loss) per share attributable to common stock</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 0.41<span></span>
</td>
<td class="nump">$ 0.13<span></span>
</td>
<td class="nump">$ 0.6<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="nump">$ 0.13<span></span>
</td>
<td class="nump">$ 0.59<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfRevenue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate cost of goods produced and sold and services rendered during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-52<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-15<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-7<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-10<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-52<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-15<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-7<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GeneralAndAdministrativeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(2)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GrossProfit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 23: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477314/942-235-S99-1<br><br>Reference 11: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 12: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-12<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 231<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482663/740-10-55-231<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479360/740-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-10<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -SubTopic 20<br> -Topic 740<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482659/740-20-45-2<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -SubTopic 10<br> -Topic 235<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestIncomeExpenseNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of interest income (expense) classified as operating.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(10))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InterestIncomeExpenseNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 17: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-10<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 34: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 37: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLossAttributableToNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of Net Income (Loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 55<br> -Paragraph 4J<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4J<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLossAttributableToNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpenses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpenses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingExpensesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingExpensesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherNonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProfitLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 11: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 205<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478009/946-205-45-3<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-19<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477314/942-235-S99-1<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 31: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4J<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4J<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4K<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4K<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-2<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProfitLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479941/924-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-5<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-42<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-40<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SellingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Expenses recognized in the period that are directly related to the selling and distribution of products or services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SellingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 16<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-16<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-10<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>14
<FILENAME>R3.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194419376">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income (Loss) (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProfitLoss', window );">Net income</a></td>
<td class="nump">$ 4,284<span></span>
</td>
<td class="nump">$ 1,170<span></span>
</td>
<td class="nump">$ 6,073<span></span>
</td>
<td class="nump">$ 48<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract', window );"><strong>Other comprehensive income (loss)</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="num">(192)<span></span>
</td>
<td class="nump">339<span></span>
</td>
<td class="num">(1,607)<span></span>
</td>
<td class="num">(98)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest', window );">Comprehensive income (loss)</a></td>
<td class="nump">4,092<span></span>
</td>
<td class="nump">1,509<span></span>
</td>
<td class="nump">4,466<span></span>
</td>
<td class="num">(50)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest', window );">Less: Comprehensive income attributable to non-controlling interests</a></td>
<td class="nump">995<span></span>
</td>
<td class="nump">148<span></span>
</td>
<td class="nump">1,341<span></span>
</td>
<td class="nump">148<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Total comprehensive income (loss) attributable to common stock</a></td>
<td class="nump">$ 3,097<span></span>
</td>
<td class="nump">$ 1,361<span></span>
</td>
<td class="nump">$ 3,125<span></span>
</td>
<td class="num">$ (198)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income (loss) and other comprehensive income (loss), attributable to noncontrolling interests. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 20<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-20<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(21))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 21<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-21<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 55<br> -Paragraph 4K<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4K<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-19<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 55<br> -Paragraph 4K<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4K<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-10A<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProfitLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 11: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 205<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478009/946-205-45-3<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-19<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477314/942-235-S99-1<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 31: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4J<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4J<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4K<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4K<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-2<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProfitLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<FILENAME>R4.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597190629056">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Current Period Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 9,455<span></span>
</td>
<td class="nump">$ 5,845<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestrictedCashCurrent', window );">Restricted cash</a></td>
<td class="nump">1,426<span></span>
</td>
<td class="nump">1,395<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Trade accounts receivable, less allowance for credit losses of $713 at July 31, 2024 and $699 at January 31, 2024</a></td>
<td class="nump">39,927<span></span>
</td>
<td class="nump">46,646<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventories</a></td>
<td class="nump">15,823<span></span>
</td>
<td class="nump">15,541<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">13,197<span></span>
</td>
<td class="nump">9,697<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnbilledReceivablesCurrent', window );">Unbilled accounts receivable</a></td>
<td class="nump">17,850<span></span>
</td>
<td class="nump">16,597<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerAssetNetCurrent', window );">Costs and estimated earnings in excess of billings on uncompleted contracts</a></td>
<td class="nump">3,085<span></span>
</td>
<td class="nump">3,097<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">100,763<span></span>
</td>
<td class="nump">98,818<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsNoncurrentAbstract', window );"><strong>Long-term assets</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property, plant and equipment, net of accumulated depreciation</a></td>
<td class="nump">37,518<span></span>
</td>
<td class="nump">37,620<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease right-of-use asset</a></td>
<td class="nump">6,938<span></span>
</td>
<td class="nump">6,467<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxAssetsNet', window );">Deferred tax assets</a></td>
<td class="nump">7,866<span></span>
</td>
<td class="nump">7,919<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">2,156<span></span>
</td>
<td class="nump">2,222<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other long-term assets</a></td>
<td class="nump">3,946<span></span>
</td>
<td class="nump">2,665<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsNoncurrent', window );">Total long-term assets</a></td>
<td class="nump">58,424<span></span>
</td>
<td class="nump">56,893<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">159,187<span></span>
</td>
<td class="nump">155,711<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsPayableCurrent', window );">Trade accounts payable</a></td>
<td class="nump">21,411<span></span>
</td>
<td class="nump">25,323<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeRelatedLiabilitiesCurrent', window );">Accrued compensation and payroll taxes</a></td>
<td class="nump">1,358<span></span>
</td>
<td class="nump">1,214<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedSalesCommissionCurrent', window );">Commissions and management incentives payable</a></td>
<td class="nump">5,210<span></span>
</td>
<td class="nump">4,523<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LinesOfCreditCurrent', window );">Revolving line - North America</a></td>
<td class="nump">6,699<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Current maturities of long-term debt</a></td>
<td class="nump">5,522<span></span>
</td>
<td class="nump">4,071<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CustomerDepositsCurrent1', window );">Customers' deposits</a></td>
<td class="nump">5,949<span></span>
</td>
<td class="nump">4,264<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Operating lease liability short-term</a></td>
<td class="nump">965<span></span>
</td>
<td class="nump">914<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Other accrued liabilities</a></td>
<td class="nump">6,178<span></span>
</td>
<td class="nump">9,039<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityCurrent', window );">Billings in excess of costs and estimated earnings on uncompleted contracts</a></td>
<td class="nump">704<span></span>
</td>
<td class="nump">495<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccruedIncomeTaxesCurrent', window );">Income taxes payable</a></td>
<td class="nump">2,475<span></span>
</td>
<td class="nump">2,380<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">56,471<span></span>
</td>
<td class="nump">57,742<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesNoncurrentAbstract', window );"><strong>Long-term liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LongTermDebtNoncurrent', window );">Long-term debt, less current maturities</a></td>
<td class="nump">8,912<span></span>
</td>
<td class="nump">9,035<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtAndLeaseObligationNoncurrent', window );">Long-term finance obligation</a></td>
<td class="nump">3,974<span></span>
</td>
<td class="nump">4,229<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent', window );">Deferred compensation liabilities</a></td>
<td class="nump">1,180<span></span>
</td>
<td class="nump">1,212<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Deferred tax liabilities</a></td>
<td class="nump">1,165<span></span>
</td>
<td class="nump">1,217<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Operating lease liability long-term</a></td>
<td class="nump">6,689<span></span>
</td>
<td class="nump">6,270<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">1,403<span></span>
</td>
<td class="nump">1,275<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesNoncurrent', window );">Total long-term liabilities</a></td>
<td class="nump">26,076<span></span>
</td>
<td class="nump">25,991<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount', window );">Non-controlling interest</a></td>
<td class="nump">8,057<span></span>
</td>
<td class="nump">6,266<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingencies', window );">Commitments and contingencies</a></td>
<td class="text"> <span></span>
</td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquityAbstract', window );"><strong>Stockholders' equity</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockValue', window );">Common stock, $.01 par value, authorized 50,000 shares; 7,978 issued and outstanding at July 31, 2024 and 8,017 at January 31, 2024</a></td>
<td class="nump">81<span></span>
</td>
<td class="nump">80<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdditionalPaidInCapital', window );">Additional paid-in capital</a></td>
<td class="nump">59,808<span></span>
</td>
<td class="nump">60,063<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TreasuryStockCommonValue', window );">Treasury stock, 112 shares at July 31, 2024 and January 31, 2024</a></td>
<td class="num">(968)<span></span>
</td>
<td class="num">(968)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained earnings</a></td>
<td class="nump">16,820<span></span>
</td>
<td class="nump">12,088<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss</a></td>
<td class="num">(7,158)<span></span>
</td>
<td class="num">(5,551)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total stockholders' equity</a></td>
<td class="nump">68,583<span></span>
</td>
<td class="nump">65,712<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and stockholders' equity</a></td>
<td class="nump">159,187<span></span>
</td>
<td class="nump">155,711<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember', window );">Related Party [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetsNoncurrentAbstract', window );"><strong>Long-term assets</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">26,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LiabilitiesNoncurrentAbstract', window );"><strong>Long-term liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LongTermLoansPayable', window );">Loan payable to GIG</a></td>
<td class="nump">$ 2,753<span></span>
</td>
<td class="nump">$ 2,753<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_CustomerDepositsCurrent1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The current portion of customer deposits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_CustomerDepositsCurrent1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LongtermDebtAndLeaseObligationNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of long-term debt and lease obligation, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LongtermDebtAndLeaseObligationNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after unamortized (discount) premium and debt issuance costs, of long-term debt, classified as current, excluding north american revolving lines of credit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481990/310-10-45-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedIncomeTaxesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedIncomeTaxesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedSalesCommissionCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for sales commissions. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 8<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-8<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedSalesCommissionCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-14A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-11<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-14<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapital">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of excess of issue price over par or stated value of stock and from other transaction involving stock or stockholder. Includes, but is not limited to, additional paid-in capital (APIC) for common and preferred stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdditionalPaidInCapital</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset recognized for present right to economic benefit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 49<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-49<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 12: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-12<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 19: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 30: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset recognized for present right to economic benefit, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold or consumed after one year or beyond the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsNoncurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsNoncurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingencies">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-8<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerAssetNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-8<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate carrying value as of the balance sheet date of the liabilities for all deferred compensation arrangements payable beyond one year (or the operating cycle, if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482525/740-10-45-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482525/740-10-45-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482525/740-10-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482525/740-10-45-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeRelatedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeRelatedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after accumulated impairment loss, of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 49<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-49<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482548/350-20-55-24<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 100<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482078/820-10-55-100<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482598/350-20-45-1<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(21))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 8: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-5<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 21: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation due after one year or beyond the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 13: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 22: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesNoncurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesNoncurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LinesOfCreditCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The carrying value as of the balance sheet date of the current portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LinesOfCreditCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermDebtNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as noncurrent. Excludes lease obligation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongTermDebtNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermLoansPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of loans payable (with maturities initially due after one year or beyond the operating cycle if longer), excluding current portion.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongTermLoansPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-7A<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 360<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478451/942-360-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>As of the reporting date, the aggregate carrying amount of all noncontrolling interests which are redeemable by the (parent) entity (1) at a fixed or determinable price on a fixed or determinable date, (2) at the option of the holder of the noncontrolling interest, or (3) upon occurrence of an event that is not solely within the control of the (parent) entity. This item includes noncontrolling interest holder's ownership (or holders' ownership) regardless of the type of equity interest (common, preferred, other) including all potential organizational (legal) forms of the investee entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 480<br> -SubTopic 10<br> -Subparagraph (12)(c)<br> -Section S99<br> -Paragraph 3A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 480<br> -SubTopic 10<br> -Subparagraph (16)(c)<br> -Paragraph 3A<br> -Section S99<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 480<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3A<br> -Subparagraph (15)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 480<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3A<br> -Subparagraph (14)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestrictedCashCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash restricted as to withdrawal or usage, classified as current. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-8<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestrictedCashCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated undistributed earnings (deficit).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480990/946-20-50-11<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-12<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-2<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 12: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 13: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 14: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480418/310-10-S99-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TreasuryStockCommonValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount allocated to previously issued common shares repurchased by the issuing entity and held in treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481520/505-30-50-4<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481549/505-30-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TreasuryStockCommonValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnbilledReceivablesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnbilledReceivablesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<FILENAME>R5.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597198530112">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent', window );">Allowance for doubtful accounts</a></td>
<td class="nump">$ 713<span></span>
</td>
<td class="nump">$ 699<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, authorized (in shares)</a></td>
<td class="nump">50,000<span></span>
</td>
<td class="nump">50,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Common stock, issued (in shares)</a></td>
<td class="nump">7,978<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Common stock, outstanding (in shares)</a></td>
<td class="nump">7,978<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TreasuryStockCommonShares', window );">Treasury stock (in shares)</a></td>
<td class="nump">112<span></span>
</td>
<td class="nump">112<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479344/326-20-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481962/310-10-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-2<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(16)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TreasuryStockCommonShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of previously issued common shares repurchased by the issuing entity and held in treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481549/505-30-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TreasuryStockCommonShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>17
<FILENAME>R6.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196225632">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Stockholders' Equity (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Common Stock [Member] </div>
<div>Revision of Prior Period, Adjustment [Member]</div>
</th>
<th class="th"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><div>Treasury Stock, Common [Member]</div></th>
<th class="th"><div>AOCI Attributable to Parent [Member]</div></th>
<th class="th"><div>Total</div></th>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jan. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">$ 62,562<span></span>
</td>
<td class="nump">$ 1,617<span></span>
</td>
<td class="num">$ (26)<span></span>
</td>
<td class="num">$ (6,449)<span></span>
</td>
<td class="nump">$ 57,784<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,123)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,123)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">229<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">229<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(437)<span></span>
</td>
<td class="num">(437)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Apr. 30, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">62,791<span></span>
</td>
<td class="nump">494<span></span>
</td>
<td class="num">(26)<span></span>
</td>
<td class="num">(6,886)<span></span>
</td>
<td class="nump">56,453<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jan. 31, 2023</a></td>
<td class="num">(56,947)<span></span>
</td>
<td class="nump">8,007,002<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jan. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">62,562<span></span>
</td>
<td class="nump">1,617<span></span>
</td>
<td class="num">(26)<span></span>
</td>
<td class="num">(6,449)<span></span>
</td>
<td class="nump">57,784<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(100)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(98)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jul. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 81<span></span>
</td>
<td class="nump">62,762<span></span>
</td>
<td class="nump">1,516<span></span>
</td>
<td class="num">(338)<span></span>
</td>
<td class="num">(6,547)<span></span>
</td>
<td class="nump">57,474<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jan. 31, 2023</a></td>
<td class="num">(56,947)<span></span>
</td>
<td class="nump">8,007,002<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Shares issued, net of shares used for tax withholding (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">66,726<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jul. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,016,781<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Apr. 30, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">62,791<span></span>
</td>
<td class="nump">494<span></span>
</td>
<td class="num">(26)<span></span>
</td>
<td class="num">(6,886)<span></span>
</td>
<td class="nump">56,453<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,022<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,022<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">245<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">245<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">339<span></span>
</td>
<td class="nump">339<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding', window );">Common stock issued under stock plans, net of shares used for tax withholding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(274)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(274)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jul. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">81<span></span>
</td>
<td class="nump">62,762<span></span>
</td>
<td class="nump">1,516<span></span>
</td>
<td class="num">(338)<span></span>
</td>
<td class="num">(6,547)<span></span>
</td>
<td class="nump">57,474<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_TreasuryStockValueAcquired', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TreasuryStockValueAcquiredCostMethod', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(312)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(311)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jul. 31, 2023</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,016,781<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jan. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">60,063<span></span>
</td>
<td class="nump">12,088<span></span>
</td>
<td class="num">(968)<span></span>
</td>
<td class="num">(5,551)<span></span>
</td>
<td class="nump">65,712<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,443<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,443<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">228<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">228<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest', window );">Amount attributable to non-controlling interest</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(421)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(421)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,415)<span></span>
</td>
<td class="num">(1,415)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Apr. 30, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">59,870<span></span>
</td>
<td class="nump">13,531<span></span>
</td>
<td class="num">(968)<span></span>
</td>
<td class="num">(6,966)<span></span>
</td>
<td class="nump">65,547<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jan. 31, 2024</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,016,781<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jan. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">60,063<span></span>
</td>
<td class="nump">12,088<span></span>
</td>
<td class="num">(968)<span></span>
</td>
<td class="num">(5,551)<span></span>
</td>
<td class="nump">65,712<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,732<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,607)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jul. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 81<span></span>
</td>
<td class="nump">59,808<span></span>
</td>
<td class="nump">16,820<span></span>
</td>
<td class="num">(968)<span></span>
</td>
<td class="num">(7,158)<span></span>
</td>
<td class="nump">68,583<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jan. 31, 2024</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,016,781<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Shares issued, net of shares used for tax withholding (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">73,087<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jul. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,089,868<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Apr. 30, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80<span></span>
</td>
<td class="nump">59,870<span></span>
</td>
<td class="nump">13,531<span></span>
</td>
<td class="num">(968)<span></span>
</td>
<td class="num">(6,966)<span></span>
</td>
<td class="nump">65,547<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,289<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,289<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">177<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">177<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest', window );">Amount attributable to non-controlling interest</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(29)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(29)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(192)<span></span>
</td>
<td class="num">(192)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding', window );">Common stock issued under stock plans, net of shares used for tax withholding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="num">(210)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(209)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jul. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 81<span></span>
</td>
<td class="nump">$ 59,808<span></span>
</td>
<td class="nump">$ 16,820<span></span>
</td>
<td class="num">$ (968)<span></span>
</td>
<td class="num">$ (7,158)<span></span>
</td>
<td class="nump">$ 68,583<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharesOutstanding', window );">Balances (in shares) at Jul. 31, 2024</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,089,868<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of other increase (decrease) in additional paid in capital (APIC) resulting from reclassification to non-controlling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of common stock issued under stock plans, net of shares used for tax withholding.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_TreasuryStockValueAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the common stock that were repurchased during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_TreasuryStockValueAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 35<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480483/718-10-35-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481089/718-20-55-13<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481089/718-20-55-12<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 17: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-10<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 34: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 37: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 220<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-10A<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares issued which are neither cancelled nor held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-12<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.6-05(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-2<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(7))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 12: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 13: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 14: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480418/310-10-S99-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TreasuryStockValueAcquiredCostMethod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the cost of common and preferred stock that were repurchased during the period. Recorded using the cost method.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481549/505-30-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TreasuryStockValueAcquiredCostMethod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>18
<FILENAME>R7.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195533200">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Operating activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProfitLoss', window );">Net income</a></td>
<td class="nump">$ 6,073<span></span>
</td>
<td class="nump">$ 48<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by operating activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">1,717<span></span>
</td>
<td class="nump">1,791<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxesAndTaxCredits', window );">Deferred tax expense</a></td>
<td class="nump">203<span></span>
</td>
<td class="nump">191<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation expense</a></td>
<td class="nump">396<span></span>
</td>
<td class="nump">456<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProvisionForDoubtfulAccounts', window );">Provision on uncollectible accounts</a></td>
<td class="nump">43<span></span>
</td>
<td class="nump">8<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GainLossOnDispositionOfAssets', window );">Gain (loss) from disposal of fixed assets</a></td>
<td class="nump">29<span></span>
</td>
<td class="num">(5)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable</a></td>
<td class="nump">6,090<span></span>
</td>
<td class="num">(9,865)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="num">(809)<span></span>
</td>
<td class="nump">882<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability', window );">Costs and estimated earnings in excess of billings on uncompleted contracts</a></td>
<td class="nump">221<span></span>
</td>
<td class="nump">2,495<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="num">(3,064)<span></span>
</td>
<td class="nump">8,044<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities', window );">Accrued compensation and payroll taxes</a></td>
<td class="num">(48)<span></span>
</td>
<td class="num">(1,650)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_IncreaseDecreaseInCustomerDeposits1', window );">Customers' deposits</a></td>
<td class="nump">1,810<span></span>
</td>
<td class="nump">534<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable', window );">Income tax receivable</a></td>
<td class="num">(789)<span></span>
</td>
<td class="num">(766)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other current assets</a></td>
<td class="num">(3,209)<span></span>
</td>
<td class="nump">989<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet', window );">Other assets and liabilities</a></td>
<td class="num">(2,974)<span></span>
</td>
<td class="nump">389<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">3,832<span></span>
</td>
<td class="nump">3,533<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Investing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Capital expenditures</a></td>
<td class="num">(3,180)<span></span>
</td>
<td class="num">(6,797)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromInsuranceSettlementInvestingActivities', window );">Proceeds from insurance recovery for property and equipment</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">5<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(3,180)<span></span>
</td>
<td class="num">(6,792)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromLinesOfCredit', window );">Proceeds from revolving credit lines</a></td>
<td class="nump">39,540<span></span>
</td>
<td class="nump">96,920<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RepaymentsOfLinesOfCredit', window );">Payments of debt on revolving credit lines</a></td>
<td class="num">(36,887)<span></span>
</td>
<td class="num">(92,091)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RepaymentsOfOtherDebt', window );">Payments of other debt</a></td>
<td class="num">(117)<span></span>
</td>
<td class="num">(124)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities', window );">Increase (decrease) in drafts payable</a></td>
<td class="nump">8<span></span>
</td>
<td class="num">(178)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeasePrincipalPayments', window );">Payments on finance lease obligations</a></td>
<td class="num">(16)<span></span>
</td>
<td class="num">(154)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PaymentsForRepurchaseOfCommonStock', window );">Repurchase of common stock</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(312)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested', window );">Stock options exercised and taxes paid related to restricted shares vested</a></td>
<td class="num">(201)<span></span>
</td>
<td class="num">(273)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash provided by financing activities</a></td>
<td class="nump">2,236<span></span>
</td>
<td class="nump">3,732<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Effect of exchange rate changes on cash, cash equivalents and restricted cash</a></td>
<td class="nump">753<span></span>
</td>
<td class="nump">61<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect', window );">Net increase in cash, cash equivalents and restricted cash</a></td>
<td class="nump">3,641<span></span>
</td>
<td class="nump">534<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash, cash equivalents and restricted cash - beginning of period</a></td>
<td class="nump">7,240<span></span>
</td>
<td class="nump">6,793<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash, cash equivalents and restricted cash - end of period</a></td>
<td class="nump">10,881<span></span>
</td>
<td class="nump">7,327<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SupplementalCashFlowInformationAbstract', window );"><strong>Supplemental cash flow information</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InterestPaidNet', window );">Cash interest paid</a></td>
<td class="nump">1,000<span></span>
</td>
<td class="nump">1,302<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxesPaidNet', window );">Cash income taxes paid</a></td>
<td class="nump">2,436<span></span>
</td>
<td class="nump">2,234<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability', window );">Fixed assets acquired under finance leases - non-cash</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">139<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1', window );">Fixed assets acquired from non affiliates - non-cash</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">4,357<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LongtermDebtTypeAxis=ppih_FinanceLeaseObligationsMember', window );">Finance Lease Obligations [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeasePrincipalPayments', window );">Payments on finance lease obligations</a></td>
<td class="num">(16)<span></span>
</td>
<td class="num">(154)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember', window );">Land and Buildings in Lebanon, Tennessee [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations', window );">Payments of principal on finance obligation</a></td>
<td class="num">(91)<span></span>
</td>
<td class="num">(56)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis=us-gaap_UnbilledRevenuesMember', window );">Unbilled Revenues [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables', window );">Unbilled accounts receivable</a></td>
<td class="num">$ (1,857)<span></span>
</td>
<td class="num">$ (8)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in contract assets and liabilities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_IncreaseDecreaseInCustomerDeposits1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the period in customer deposits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_IncreaseDecreaseInCustomerDeposits1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the cash inflow (outflow) related to stock options exercised and taxes related to restricted shares vested.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -SubTopic 230<br> -Topic 830<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477401/830-230-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxesAndTaxCredits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) and income tax credits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxesAndTaxCredits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DepreciationDepletionAndAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 49<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-49<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DepreciationDepletionAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies. Excludes amounts for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 830<br> -SubTopic 230<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477401/830-230-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeasePrincipalPayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for principal payment on finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeasePrincipalPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnDispositionOfAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 360<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482130/360-10-45-5<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 360<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482099/360-10-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnDispositionOfAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after refund, of cash paid to foreign, federal, state, and local jurisdictions as income tax.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-2A<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 23<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-23<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-22<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxesPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the amount due from customers for the credit sale of goods and services; includes accounts receivable and other types of receivables.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the amounts payable to taxing authorities for taxes that are based on the reporting entity's earnings, net of amounts receivable from taxing authorities for refunds of overpayments or recoveries of income taxes.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOperatingCapitalAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The change in cash during the period due to the net increase or decrease in outstanding checks, the liability that represents checks that have been issued but that have not cleared. The entity may classify these cash flows as financing or operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 9<br> -Subparagraph (c)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-9<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-17<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-25<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InterestPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-25<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of fixed assets that an Entity acquires in a noncash (or part noncash) acquisition. Noncash is defined as information about all investing and financing activities of an enterprise during a period that affect recognized assets or liabilities but that do not result in cash receipts or cash payments in the period. "Part noncash" refers to that portion of the transaction not resulting in cash receipts or cash payments in the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-4<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-3<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsForRepurchaseOfCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash outflow to reacquire common stock during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-15<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-13<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromInsuranceSettlementInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow for proceeds from settlement of insurance claim, classified as investing activities. Excludes insurance settlement classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-12<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 21B<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-21B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromInsuranceSettlementInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromLinesOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-14<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProfitLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 11: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 11<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-11<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 205<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478009/946-205-45-3<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 19<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-19<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 235<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477314/942-235-S99-1<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 31: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4J<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4J<br><br>Reference 32: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 4K<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4K<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-2<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br><br>Reference 37: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProfitLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProvisionForDoubtfulAccounts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expense (reversal of expense) for expected credit loss on accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479319/326-20-50-13<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProvisionForDoubtfulAccounts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for short-term and long-term debt and lease obligation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfLinesOfCredit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-15<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(f))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfLinesOfCredit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfOtherDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for the payment of debt classified as other.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-15<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfOtherDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in right-of-use asset obtained in exchange for finance lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SupplementalCashFlowInformationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SupplementalCashFlowInformationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongtermDebtTypeAxis=ppih_FinanceLeaseObligationsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongtermDebtTypeAxis=ppih_FinanceLeaseObligationsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis=us-gaap_UnbilledRevenuesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis=us-gaap_UnbilledRevenuesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>19
<FILENAME>R8.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195662032">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Basis of Presentation<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock', window );">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">1</em> - Basis of presentation</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The interim consolidated financial statements of Perma-Pipe International Holdings, Inc., and subsidiaries (collectively, "PPIH", "Company", or "Registrant") are unaudited, but include all adjustments that the Company's management considers necessary to fairly state the financial position and results of operations for the periods presented. These adjustments consist of normal recurring adjustments. Certain information and footnote disclosures have been omitted pursuant to Securities and Exchange Commission ("SEC") rules and regulations. The consolidated balance sheet as of&#160;<em style="font: inherit;"> January 31, 2024</em> is derived from the audited consolidated balance sheet as of that date. The results of operations for any interim period are <em style="font: inherit;">not</em> necessarily indicative of future or annual results. Interim financial statements should be read in conjunction with the financial statements and the notes thereto included in the Company's latest Annual Report on Form <em style="font: inherit;">10</em>-K. The Company's fiscal year ends on <em style="font: inherit;"> January 31. </em>Years and balances described as&#160;<em style="font: inherit;">2024</em> and&#160;<em style="font: inherit;">2023</em> are for the fiscal year ending <em style="font: inherit;"> January 31,&#160;</em><em style="font: inherit;">2025</em>&#160;and for the fiscal year ended&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b></b></p><p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Significant New Accounting Policies</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Refer to the Company's Annual Report on Form <em style="font: inherit;">10</em>-K for the year ended <em style="font: inherit;"> January 31, 2024</em>&#160;as filed with the SEC on <em style="font: inherit;"> April 26, 2024&#160;</em>for discussion of the Company's significant accounting policies.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>, the Company did <em style="font: inherit;">not</em> adopt or make changes to any new or existing accounting policies.</p><p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480424/946-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480424/946-10-50-2<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/810/tableOfContent<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 205<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/205/tableOfContent<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>20
<FILENAME>R9.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194264560">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Business Segment Reporting<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SegmentReportingDisclosureTextBlock', window );">Segment Reporting Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">2</em> - Business segment reporting</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company is engaged in the manufacture and sale of products in one reportable segment: Piping Systems.&#160;The Company engineers, manufactures and sells pre-insulated specialty piping systems, and leak detection systems. Pre-insulated specialty piping systems include: (i) insulated and jacketed district heating and cooling piping systems for efficient energy distribution from central energy plants to multiple locations, (ii) primary and secondary containment piping systems for transporting chemicals, hazardous fluids and petroleum products,&#160;(iii) the coating and/or insulation of oil and gas gathering and transmission pipelines, and (iv) liquid and powder based anti-corrosion coatings applied both to the external and internal surfaces of steel pipe, including shapes like bends, reducers, tees, and other spools/fittings used in pipelines for the transportation of oil and&#160;gas products and potable water.&#160;The Company's leak detection systems are sold with its piping systems or on a stand-alone basis&#160;to monitor areas where fluid intrusion <em style="font: inherit;"> may </em>contaminate the environment, endanger personal safety, cause a fire hazard, impair essential services or damage equipment or property.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 54<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 47<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47<br><br>Reference 8: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 54<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 47<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47<br><br>Reference 10: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 54<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54<br><br>Reference 11: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 47<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 31<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-31<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 34<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-34<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 26C<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26C<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 26B<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26B<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-15<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-42<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-40<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/280/tableOfContent<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 26<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-26<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-21<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-21<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R10.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597281911024">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Accounts Receivable<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock', window );">Loans, Notes, Trade and Other Receivables Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">3</em> - Accounts receivable</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The majority of the Company's accounts receivable are due from geographically dispersed contractors and manufacturing companies. Credit is extended based on an evaluation of a customer's financial condition. In the United States, collateral is <em style="font: inherit;">not</em> generally required. In the United Arab Emirates ("U.A.E."), Saudi Arabia, Egypt and India&#160;letters of credit are usually obtained for significant orders. Accounts receivable are due within various time periods specified in the terms applicable to the specific customer and are stated as&#160;amounts due from customers net of an allowance for claims and credit losses. Standard payment terms are generally net <em style="font: inherit;">30</em> to <em style="font: inherit;">60</em> days. The allowance for credit losses&#160;is&#160;based on specifically identified amounts in customers' accounts, where future collectability is deemed uncertain. Management <em style="font: inherit;"> may </em>exercise its judgment in adjusting the provision as a consequence of known items, such as current economic factors and credit trends. Past due trade accounts receivable balances are written off when the Company's collection efforts have been unsuccessful in collecting the amount due and the amount is deemed uncollectible. The write off is recorded against the allowance for credit losses.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>


   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">In <em style="font: inherit;">2015,</em> the Company completed a project in the Middle East with billings in the aggregate amount of approximately $41.9 million. The system has <em style="font: inherit;">not</em> yet been commissioned by the customer. Nevertheless, the Company has received&#160;approximately $40.1&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024</em>, with a remaining balance due in the amount of $1.8 million, all of which pertains to retention clauses within the agreements with&#160;the Company's customer, and which become payable by the customer when this project is fully tested and commissioned. Of this amount, $1.3 million&#160;is&#160;classified in other<span style="background-color:#ffffff">&#160;long-term assets on the Company's consolidated balance sheets.</span></p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company has been actively involved&#160;in ongoing efforts to collect this&#160;outstanding balance. The Company continues to engage with the customer to ensure full payment of the open balances, and during the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>, and at various times throughout <em style="font: inherit;">2023,</em> the Company received&#160;partial payments to settle $0.3&#160;million and $0.6&#160;million, respectively, of the customer's outstanding balances. Further, the Company has been engaged by the customer to perform additional work in <em style="font: inherit;">2024</em> under customary trade terms that supports the continued cooperation between the Company and the customer. As a result, the Company did <span style="-sec-ix-hidden:c116841022">not</span> reserve any allowance against the remaining outstanding balances as of&#160;<em style="font: inherit;"> July 31, 2024</em>. However, if the Company's efforts to collect on this account are <em style="font: inherit;">not</em> successful, the Company <em style="font: inherit;"> may </em>recognize an allowance for all, or substantially all, of any such then uncollected amounts.&#160;</p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><span style="background-color:#ffffff;">For the&#160;<em style="font: inherit;">three</em> months ended <em style="font: inherit;"> July 31, 2024</em>,&#160;no&#160;individual customer accounted for greater than&#160;<em style="font: inherit;">10%</em>&#160;of the Company's consolidated net sales, and during the same period in <em style="font: inherit;">2023,</em> <span style="-sec-ix-hidden:c116841028">one</span> customer accounted for greater than <em style="font: inherit;">10%</em> of the Company's consolidated net sales. For the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>,&#160;no individual customer accounted for greater than&#160;<em style="font: inherit;">10%</em> of the Company's consolidated net sales.</span></p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><span style="background-color:#ffffff;">As of&#160;</span><em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em><span style="background-color:#ffffff;">,&#160;</span>no<span style="background-color:#ffffff;">&#160;individual customer&#160;accounted for more than&#160;</span><em style="font: inherit;">10%</em><span style="background-color:#ffffff;">&#160;of the Company's accounts receivable,&#160;and <span style="-sec-ix-hidden:c116841038">one</span> customer accounted for more than&#160;</span><em style="font: inherit;">10%</em><span style="background-color:#ffffff;">&#160;of the Company's accounts receivable, respectively.</span></p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for claims held for amounts due to entity, excluding financing receivables. Examples include, but are not limited to, trade accounts receivables, notes receivables, loans receivables. Includes disclosure for allowance for credit losses.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/310-10/tableOfContent<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>22
<FILENAME>R11.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195752272">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Revenue Recognition<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerTextBlock', window );">Revenue from Contract with Customer [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">4</em> - Revenue recognition&#160;</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company accounts for its revenues under Accounting Standards Codification ("ASC") <em style="font: inherit;">606,</em> <i>Revenue from Contracts with Customers</i>.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Revenue from contracts with customers</b></i></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company defines a contract as an agreement that has approval and commitment from both parties, defined rights and identifiable payment terms, which ensures the contract has commercial substance and that collectability is reasonably assured.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company&#8217;s standard revenue transactions are classified into <em style="font: inherit;">two</em> main categories:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">1</em>)</p> </td><td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;">Systems and Coating&#160;- which include all bundled products in which Perma-Pipe engineers, and manufactures pre-insulated specialty piping systems mainly relating to the district heating and cooling and oil &amp; gas markets.</td></tr>
</tbody></table>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">2</em>)</p> </td><td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;">Products - which include cables, leak detection products, heat trace products, material/goods <em style="font: inherit;">not</em> bundled with piping or flowline systems, and field services <em style="font: inherit;">not</em> bundled into a project contract.</td></tr>
</tbody></table>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">In accordance with ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">25</em>-<em style="font: inherit;">27</em> through <em style="font: inherit;">29,</em> the Company recognizes specialty piping and coating systems revenue over time as the manufacturing process progresses because <em style="font: inherit;">one</em> of the following conditions exist:</p>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">1</em>)</p> </td><td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">the customer owns the material that is being coated, so the customer controls the asset and thus the work-in-process; or</p> </td></tr>
</tbody></table>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="font-family: Times New Roman; font-size: 10pt;"><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p> </td><td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">2</em>)</p> </td><td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">the customer controls the work-in-process due to the custom nature of the pre-insulated, fabricated system being manufactured, which has <em style="font: inherit;">no</em> alternative future use, and there is a right to payment for work performed&#160;to date plus profit margin.</p> </td></tr>
</tbody></table>
   <p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt 7.2pt; text-align: justify; text-indent: -9pt; font-family: Times New Roman; font-size: 10pt;">&#160;Products revenue is recognized when goods are shipped or services are performed (ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">25</em>-<em style="font: inherit;">30</em>).</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">A breakdown of the Company's revenues by revenue class for the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>&#160;are as follows:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Products</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,795</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,146</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">4,988</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Specialty Piping Systems and Coating</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under input method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">12,613</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">34</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">12,801</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">22,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">23,139</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under output method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">22,105</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">20,194</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">43,034</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">36,671</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Total</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">37,513</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">35,141</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">71,834</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">64,798</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The input method as noted in ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">55</em>-<em style="font: inherit;">20</em> is used by certain operating entities to measure revenue by the costs incurred to date relative to the estimated costs to satisfy the contract over time. Generally, these contracts are considered a single performance obligation satisfied over time and due to the custom nature of the goods and services, the "over time" method is the most faithful depiction of the Company&#8217;s performance as it measures the value of the goods and services transferred to the customer. Costs include all material, labor, and direct costs incurred to satisfy the performance obligations of the contract. Revenue recognition begins when projects costs are incurred. &#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>


   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The output method as noted in ASC <em style="font: inherit;">606</em>-<em style="font: inherit;">10</em>-<em style="font: inherit;">55</em>-<em style="font: inherit;">17</em> is used by all&#160;other operating entities to measure revenue by the direct measurement of the outputs produced relative to the remaining goods promised under the contract. Due to the types of end customers, generally these contracts require formal inspection protocols or specific export documentation for units produced, or produced and shipped, therefore, the output method is the most faithful depiction of the Company&#8217;s performance. Depending on the conditions of the contract, revenue <em style="font: inherit;"> may </em>be recognized based on units produced, inspected and held by the Company prior to shipment or on units produced, inspected and shipped.&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Some of the Company&#8217;s operating entities invoice and collect milestones or other contractual obligations prior to the transfer of goods and services, but do&#160;<em style="font: inherit;">not</em> recognize revenue until the performance obligations are satisfied under the methods discussed above.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Contract modifications that occur prior to the start of the manufacturing process will supersede the original contract and revenue is recognized using the modified contract value. Contract modifications that occur during the manufacturing process (changes in scope of work, job performance, material costs, and/or final contract settlements) are recognized in the period in which the revisions are known. Provisions are made for estimated losses on uncompleted contracts in the contract liabilities account in the period in which such losses are determined.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The transaction price&#160;associated with the Company's contracts with customers are generally determined based on the fixed amount of consideration&#160;as specified&#160;in a&#160;contract. This&#160;<em style="font: inherit;"> may </em>also include variable consideration in certain instances where&#160;it is considered probable that a significant reversal of cumulative revenue recognized will <em style="font: inherit;">not</em> occur. As a result, the amount of consideration ultimately received from the customer can fluctuate due to the variability of future events&#160;stated in a&#160;contract. Therefore, the aggregate amount of the transaction price&#160;includes the&#160;fixed consideration contained in a&#160;contract that is generally <em style="font: inherit;">not</em> subject to change and excludes&#160;sales and value added taxes, or amounts collected on behalf of <em style="font: inherit;">third</em> parties, along with any variable consideration. The total transaction price&#160;is then allocated to the performance obligations which is&#160;eventually recognized as revenue based on the project type and the method that is used to measure the transfer&#160;of promised goods and services to&#160;customers.&#160;Additionally, transaction prices relating to cost-plus contracts are determined by applying the applicable profit margin to costs incurred on contracts, whereas transaction prices relating to fixed price contracts are determined on a lump-sum basis. Further, standard payment terms are generally&#160;net <em style="font: inherit;">30</em> to <em style="font: inherit;">60</em> days, which is customer specific.</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Contract assets and liabilities</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Contract assets represent revenue recognized in excess of amounts billed&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Contract liabilities represent billings in excess of costs&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Both customer billings and the satisfaction (or partial satisfaction) of the performance obligation(s) occur throughout the manufacturing process and impact&#160;the period end balances in these accounts.&#160;In addition, contract assets include receivables or amounts that are billable beyond the passage of time.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The following table shows the reconciliation of&#160;costs in excess of billings and billings in excess of costs:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Costs incurred on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">17,686</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">21,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Estimated earnings</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Earned revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">29,796</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">33,182</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Less billings to date</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">27,415</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">30,580</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,602</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Balance sheet classification</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,085</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,097</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(704</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(495</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,602</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;"><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; background-color: rgb(255, 255, 255);">The Company anticipates that substantially all costs incurred on&#160;uncompleted contracts&#160;as of&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;will be billed and collected within <span style="-sec-ix-hidden:c116841079">one</span> year</span><span style="background-color: rgb(255, 255, 255);"><span style="font-family: Times New Roman;">.&#160;</span></span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">Unbilled accounts receivable</span></b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">The Company has recorded<span style="background-color:#ffffff;"> $</span>17.9</span><span style="background-color:#ffffff;">&#160;million</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">&#160;and $16.6&#160;million&#160;</span>of unbilled accounts receivable&#160;on the consolidated balance sheet<span style="color:#000000;">s </span></span>as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="color:#000000;">,</span>&#160;from&#160;revenues generated by certain of its subsidiaries. The Company has fulfilled all performance obligations and has recorded revenue under the respective contracts. The deliverables under these contracts have been accepted by the customer and billings will be made once the customer takes possession of or arranges shipping for the products. The Company anticipates that substantially all of the amounts included in unbilled accounts receivable as of&#160;</span><em style="font: inherit;"> July 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;will be billed within <em style="font: inherit;">one</em> year.</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Practical expedients</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Costs to obtain a contract are <em style="font: inherit;">not</em> considered to be incremental or material, and project duration generally does <em style="font: inherit;">not</em> span more than <em style="font: inherit;">one</em> year. Accordingly, the Company applies the practical expedient for these types of costs and as such, are expensed in the period incurred.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">As a result of the Company's contracts having a duration of less than <em style="font: inherit;">one</em> year, a practical expedient was applied regarding disclosure of the aggregate amount and future timing of performance obligations that are unsatisfied or partially satisfied as of the end of the reporting period.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>


  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-9<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-10<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-15<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-12<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-12<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-12<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-12<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-12<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-13<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Topic 606<br> -Publisher FASB<br> -URI https://asc.fasb.org/606/tableOfContent<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>23
<FILENAME>R12.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194748912">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Inventories<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryDisclosureTextBlock', window );">Inventory Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"><b>Note <em style="font: inherit;">5</em> - </b><b>Inventories</b></p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Inventories are stated at the lower of cost or net realizable value. Cost is determined using the <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out method for all inventories.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Inventories consisted of the following:&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Raw materials</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,777</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,787</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Work in process</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">574</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">611</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finished goods</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,275</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,022</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Subtotal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,626</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,420</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Less allowance</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">803</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">879</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Inventories</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,541</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company conducts periodic reviews&#160;of its inventory and records&#160;allowances for slow moving and obsolete items to reflect their net realizable value, which is primarily attributable to finished goods.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>


  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 330<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/330/tableOfContent<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>24
<FILENAME>R13.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195258096">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Income Taxes<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Tax Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">6</em>&#160;- Income taxes&#160;</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The determination of the consolidated provision for income taxes, deferred tax assets and liabilities and related valuation allowances requires management to make judgments and estimates. As a company with subsidiaries in foreign jurisdictions, the process of calculating income taxes involves estimating current tax obligations and exposures in each jurisdiction as well as making judgments regarding the future recoverability of deferred tax assets. The relative proportion of taxable income earned domestically versus internationally can fluctuate significantly from period to period. Changes in the estimated level of annual pre-tax income, tax laws and the results of tax audits can affect the overall effective income tax rate, which impacts the level of income tax expense and net income. Judgments and estimates related to the Company's projections and assumptions are inherently uncertain; therefore, actual results could differ materially from projections.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><span style="background-color:#ffffff;">The Company's worldwide effective tax rates ("ETR") for the&#160;</span><em style="font: inherit;">three</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em><span style="background-color:#ffffff;">&#160;were&#160;</span>23%<span style="background-color:#ffffff;">&#160;and </span>45%<span style="background-color:#ffffff;">, respectively. The Company's ETR was&#160;25% and&#160;97% for the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;">2023</em>, respectively.&#160;</span>The change in the ETR is due to the ability to recognize tax benefits on losses in the United States in the current year whereas the prior year had a full valuation allowance and changes in the mix of income and loss in various jurisdictions.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company expects that future distributions from foreign subsidiaries will <em style="font: inherit;">not</em> be subject to incremental U.S. federal tax as they will be excludible&#160;from U.S. taxable income&#160;either be remittances of previously taxed earnings&#160;and profits or eligible for a full dividends received deduction. Current and future earnings in the Company's subsidiaries in Canada and Egypt are <em style="font: inherit;">not</em> permanently reinvested. The earnings from these subsidiaries are subject to tax in their local jurisdiction, and withholding taxes in these jurisdictions are considered.&#160;As such, the Company has accrued a liability of $0.7 million as of <em style="font: inherit;"> July 31, 2024</em> related to these taxes.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for income tax.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-12<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 231<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482663/740-10-55-231<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12C<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-12C<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12B<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-12B<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 270<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477891/740-270-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.5.Q1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479360/740-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480990/946-20-50-13<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/740/tableOfContent<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 14<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-14<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 21<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-21<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-17<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 11.C)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479360/740-10-S99-2<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482603/740-30-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>25
<FILENAME>R14.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194215840">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Impairment of Long-lived Assets<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AssetImpairmentChargesTextBlock', window );">Asset Impairment Charges [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">7</em>&#160;- Impairment of long-lived assets</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company's assessment of long-lived assets, and other identifiable intangibles is based upon factors that market participants would use in accordance with the accounting guidance for the fair value measurement of assets.&#160;At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company performed an&#160;assessment to determine whether there were any triggering events that <em style="font: inherit;"> may </em>have occurred which could indicate that the carrying value of the Company's long-lived assets are <em style="font: inherit;">not</em> recoverable, and an impairment <em style="font: inherit;"> may </em>exist. Based on this assessment, the Company did <em style="font: inherit;">not</em> identify any triggering events that would indicate that the carrying amounts <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be recoverable with respect to long-lived assets at&#160;<em style="font: inherit;"> July 31, 2024</em>.&#160; The Company will continue testing for potential impairment at least annually or as otherwise required by applicable accounting standards.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Goodwill.</b></i> The purchase price of an acquired company is allocated between intangible assets and the net tangible assets of the acquired business with the residual of the purchase price recorded as goodwill. All identifiable goodwill&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>&#160;is&#160;attributable to the purchase of the remaining 50% interest in Perma-Pipe Canada, Ltd., which occurred in <em style="font: inherit;">2016.</em></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The&#160;following table provides a reconciliation of changes in the carrying amount of goodwill:</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Foreign exchange change effect</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(66</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,156</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">The Company performs an impairment assessment of goodwill annually&#160;as of <em style="font: inherit;"> January 31,</em>&#160;or more frequently if triggering events occur, based on the estimated fair value of the related reporting unit or intangible asset. Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. During the period ended&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company performed a periodic assessment to determine whether there were any triggering events that <em style="font: inherit;"> may </em>have occurred which could indicate that more likely than <em style="font: inherit;">not</em>&#160;that the fair value of the reporting unit did <em style="font: inherit;">not</em> exceed its carrying value, resulting in an impairment. Based on this assessment, the Company did <em style="font: inherit;">not</em> identify any triggering events that would indicate that the fair value is less than the carrying value of the reporting unit at&#160;<em style="font: inherit;"> July 31, 2024</em>.&#160;Accordingly, the Company did <em style="font: inherit;">not</em> proceed with performing an impairment test as a result of this periodic assessment. The Company will continue testing for impairment at least annually&#160;as of <em style="font: inherit;"> January 31,</em>&#160;or as otherwise required by applicable accounting standards.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>


  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetImpairmentChargesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the details of the charge against earnings resulting from the aggregate write down of all assets from their carrying value to their fair value. Disclosure may also include a description of the impaired asset and facts and circumstances leading to the impairment, amount of the impairment loss and where the loss is located in the income statement, method(s) for determining fair value, and the segment in which the impaired asset is reported.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetImpairmentChargesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>26
<FILENAME>R15.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597308535696">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock', window );">Share-Based Payment Arrangement [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">8</em>&#160;- Stock-based compensation&#160;</b></p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company has prior incentive plans under which previously granted awards remain outstanding, but under which <em style="font: inherit;">no</em> new awards <em style="font: inherit;"> may </em>be granted, including the Company's <em style="font: inherit;">2021</em> Omnibus Stock Incentive Plan, which expired in <em style="font: inherit;"> May 2024. </em>At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company had reserved a total <span style="background-color:#ffffff;">196,026</span>&#160;shares for grants and issuances under these incentive plans, including&#160;issuances pursuant to unvested or unexercised prior awards.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company's prior incentive plans provided for the grant of deferred shares, non-qualified stock options, incentive stock options, restricted shares, restricted stock units, and performance-based restricted stock units intended to qualify under section <em style="font: inherit;">422</em> of the Internal Revenue Code. The prior incentive plans authorized awards to officers, employees, consultants, and independent directors.&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Company's <em style="font: inherit;">2024</em> Omnibus Stock Incentive Plan, dated <em style="font: inherit;"> May 28, 2024, </em>was approved by the Company's stockholders in <em style="font: inherit;"> July 2024 (</em><em style="font: inherit;">"2024</em> Plan"). The <em style="font: inherit;">2024</em> Plan will expire&#160;in <em style="font: inherit;"> July 2027. </em>The <em style="font: inherit;">2024</em> Plan authorizes awards to officers, employees, consultants, and independent directors.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">Grants were made in connection with the <em style="font: inherit;">2024</em> Plan and the prior incentive plans to employees, officers, and independent directors, as further described below.&#160;&#160;&#160;</p>
   <div style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     &#160;
   </div>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Stock-based&#160;compensation expense</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company has granted stock-based compensation awards to eligible employees, officers&#160;or independent directors. The Company recognized the following&#160;stock-based compensation expense&#160;for the periods presented:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">177</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">227</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">396</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">456</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><i><b>Stock options</b></i></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The Company did <span style="-sec-ix-hidden:c116841227"><span style="-sec-ix-hidden:c116841238">not</span></span> grant any stock options during the <em style="font: inherit;">three</em> or <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>. The following table&#160;summarizes&#160;the Company's stock option activity:</p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Options</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Exercise Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Remaining Contractual Term (In years)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">11.15</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">0.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Exercised</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6.85</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Expired or forfeited</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12.41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding and exercisable at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6.89</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">There was no vesting, expiration or forfeiture of previously unvested stock options during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em></span><span style="background-color:#ffffff;">. In addition</span><span style="background-color:#ffffff;">, there were no remaining unvested stock options outstanding, and therefore no unrecognized compensation expense related to unvested stock options.</span></p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>


   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Restricted stock</b></i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The following table summarizes the Company's restricted stock activity for the&#160;<em style="font: inherit;">six</em> months ended&#160;<em style="font: inherit;"> July 31, 2024</em>:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Restricted Shares</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.33</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,078</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">108</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">8.81</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Vested and issued</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(73</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.36</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Forfeited or retired for taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10.25</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">230</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9.05</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2,083</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">As of <em style="font: inherit;"> July 31, 2024</em>, there was $1.5<span style="background-color:#ffffff;">&#160;million</span> of unrecognized compensation expense related to unvested restricted stock granted under the&#160;plans. These&#160;costs are&#160;expected to be recognized over a weighted average period of 2.1<span style="background-color:#ffffff;">&#160;years</span>.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/718/tableOfContent<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (l)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>27
<FILENAME>R16.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194263760">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Earnings Per Share<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareTextBlock', window );">Earnings Per Share [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">9</em>&#160;- Earnings per share</b></p>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted average common shares outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,954</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,029</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,017</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Dilutive effect of equity compensation plans</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Weighted average common shares outstanding assuming full dilution</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,125</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,139</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7,987</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,017</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">114</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock with exercise prices or grant date prices below the average market prices</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss) attributable to common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,289</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,022</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">4,732</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Earnings (loss) per share attributable to common stock</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.13</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(0.01</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.13</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(0.01</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
</tbody></table>

   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>


  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for earnings per share.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/260/tableOfContent<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>28
<FILENAME>R17.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194268464">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Debt<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtDisclosureTextBlock', window );">Debt Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">10</em>&#160;- Debt</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Debt totaled $27.9 million and $25.7 million at <em style="font: inherit;"> July 31, 2024</em>&#160;and <em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Revolving lines -&#160;North America</b></i><b>.&#160;</b>On <em style="font: inherit;"> September 20, 2018, </em>the Company and certain of its U.S. and Canadian subsidiaries (collectively, together with the Company, the &#8220;North American Loan Parties&#8221;) entered into a Revolving Credit and Security Agreement (the &#8220;Credit Agreement&#8221;) with PNC Bank, National Association ("PNC"), as administrative agent and lender, providing for a <span style="-sec-ix-hidden:c116841349">three</span>-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Senior Credit Facility&#8221;).</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">On <em style="font: inherit;"> September 17, 2021,&#160;</em>the North American Loan Parties&#160;executed an extension of the Credit Agreement&#160;with PNC, providing for a new <span style="-sec-ix-hidden:c116841351">five</span>-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#8220;Renewed Senior Credit Facility&#8221;). The Company's&#160;obligations under the Renewed Senior Credit Facility are currently guaranteed by Perma-Pipe Canada, Inc. Each of the North American Loan Parties other than Perma-Pipe Canada, Inc. (collectively, the "Borrowers") is a borrower under the Renewed Senior Credit Facility.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Borrowers have used and will continue to use borrowings under the Renewed Senior Credit Facility (i)&#160;to fund future capital expenditures; (ii)&#160;to fund ongoing working capital needs; and (iii)&#160;for other corporate purposes, including potentially additional stock&#160;repurchases. Borrowings under the Renewed Senior Credit Facility bear&#160;interest at a rate equal to an alternate base rate, SOFR&#160;rate index, plus, in each case, an applicable margin. The applicable margin is based on a fixed charge coverage ratio ("FCCR") range. Interest on alternate base rate borrowings is the alternate base rate (as defined&#160;in the Renewed Senior Credit Facility) plus an applicable margin ranging from 1.00% to 1.50%, based on the FCCR in the most recently reported period. Interest on SOFR rate borrowings is the SOFR&#160;rate (as defined in the Renewed Senior Credit Facility) plus an applicable margin ranging from 2.00% to 2.50%, based on the FCCR in the most recently reported period, as well as an additional SOFR adjustment ranging from 0.10% to 0.25%, based on the term of the interest period. Additionally, the Borrowers pay a 0.25% per annum facility fee on the unused portion of the Renewed Senior Credit Facility.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Subject to certain exceptions, borrowings under the Renewed Senior Credit Facility are secured by substantially all of the North American Loan Parties&#8217; assets. The Renewed Senior Credit Facility matures on <em style="font: inherit;"> September 20, 2026. </em>Subject to certain qualifications and exceptions, the Renewed Senior Credit Facility contains covenants that, among other things, restrict the North American Loan Parties&#8217; ability to create liens, merge or consolidate, consummate acquisitions, make investments, dispose of assets, incur debt, and pay dividends and other distributions. In addition, the North American Loan Parties <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> make&#160;capital expenditures in excess of $5.0 million annually, plus a limited carryover of unused amounts. Further, the North American Loan Parties <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> make repurchases of the Company's common stock in excess of $3.0 million.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Renewed Senior Credit Facility also contains financial covenants requiring&#160;the North American Loan Parties to achieve a ratio of its EBITDA (as defined in the Renewed Senior Credit Facility) to the sum of scheduled cash principal payments on indebtedness for borrowed money and interest payments on the advances under the Renewed Senior Credit Facility&#160;to be <em style="font: inherit;">not</em> less than 1.10 to <em style="font: inherit;">1.00</em> for any <em style="font: inherit;">five</em> consecutive days in which the undrawn availability is less than $3.0 million&#160;or any day in which the undrawn availability is less than $2.0 million. In order to cure any future breach of these covenants by the North American Loan Parties, the Company <em style="font: inherit;"> may </em>repatriate cash from any of its foreign subsidiaries that are otherwise <em style="font: inherit;">not</em> a party to the Renewed Senior Credit Facility in an amount which, when added to the amount of the Company&#8217;s Consolidated EBITDA, would result in compliance on a pro forma basis. The Company was in compliance with respect to these covenants as of&#160;<em style="font: inherit;"> July 31, 2024</em>.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;">The Renewed Senior Credit Facility contains customary events of default. If an event of default occurs and is continuing, then PNC <em style="font: inherit;"> may </em>terminate all commitments to extend further credit and declare all amounts outstanding under the Renewed Senior Credit Facility due and payable immediately. In addition, if any of the North American Loan Parties or certain of their subsidiaries become the subject of voluntary or involuntary proceedings under any bankruptcy, insolvency or similar law, then any outstanding obligations under the Renewed Senior Credit Facility will automatically become immediately due and payable. Loans outstanding under the Renewed Senior Credit Facility will bear interest at a rate of 2.00% per annum in excess of the otherwise applicable rate (i) while a bankruptcy event of default exists or (ii) upon the lender's&#160;request, during the continuance of any other event of default.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">As of <em style="font: inherit;"> July 31, 2024</em>,&#160;the Company had borrowed an aggregate of <span style="background-color:#ffffff">$6.7</span><span style="background-color:#ffffff">&#160;million at a rate of 10.0%</span><span style="background-color:#ffffff">&#160;and had $4.7</span><span style="background-color:#ffffff">&#160;million available under the Renewed Senior Credit Facility. As of <em style="font: inherit;"> January 31, 2024</em>, the Company had borrowed an aggregate of $5.5&#160;million and had $4.0&#160;million available under the Renewed Senior Credit Facility. &#160;</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>


   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Finance obligation&#160;- buildings and land. </span></b></i><span style="background-color:#ffffff;">On <em style="font: inherit;"> April 14, 2021, </em>the Company entered into a purchase and sale agreement (the "Purchase and Sale Agreement"). Pursuant to the terms of the Purchase and Sale Agreement, the Company sold its land and buildings in Lebanon, Tennessee (the "Property") for $10.4 million. The transaction generated net cash proceeds of $9.1&#160;million. Concurrently with the sale, the Company paid off the approximately $0.9 million&#160;mortgage note on the Property to its lender.&#160; The&#160;Company used the remaining proceeds to repay its borrowings under the Senior Credit Facility, for&#160;strategic investments, and for general corporate needs. Concurrent with the sale of the Property, the Company entered into a&#160;<span style="-sec-ix-hidden:c116841381">fifteen</span>-year lease agreement (the &#8220;Lease Agreement&#8221;), whereby the Company leases back the Property at an annual rental rate of&#160;approximately $0.8 million, subject to annual rent increases of&#160;2.0%. Under the Lease Agreement, the Company has&#160;<span style="-sec-ix-hidden:c116841384">four</span> consecutive options to extend the term of the lease by&#160;<span style="-sec-ix-hidden:c116841385">five</span> years for each such option. &#160;</span></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><span style="background-color:#ffffff;">In accordance with ASC&#160;<em style="font: inherit;">842,</em> <i>Leases</i>, this transaction was recorded as a failed sale and leaseback as the present value of lease payments exceeded&#160;substantially the&#160;fair value of the underlying assets. The Company utilized an incremental borrowing rate of 8.0% to determine&#160;the finance obligation&#160;to record for the amounts received&#160;and will continue to depreciate the assets.&#160;The current portion of the finance obligation of $0.2&#160;million is recognized in current maturities of long-term debt and the long-term portion of $8.9&#160;million is recognized&#160;in&#160;long-term finance obligation&#160;on the Company's consolidated balance sheets as of <em style="font: inherit;"> July 31, 2024</em></span><span style="background-color:#ffffff;">.&#160;The net carrying amount of the financial liability and remaining assets will be <em style="font: inherit;">zero</em> at the end of the lease term.</span></p>
   <p style="margin: 0pt 7.2pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><i><b><span style="background-color:#ffffff;">Revolving lines -&#160;foreign</span></b></i><b><span style="background-color:#ffffff;">.</span></b><span style="background-color:#ffffff;"> The Company also has credit arrangements used by its Middle Eastern subsidiaries in the U.A.E.</span><span style="background-color:#ffffff;">,</span><span style="background-color:#ffffff;"> Egypt </span><span style="background-color:#ffffff;">and Saudi Arabia </span><span style="background-color:#ffffff;">as discussed further below.</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i>United Arab Emirates</i></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company has&#160;a revolving line for 8.0&#160;million U.A.E. Dirhams (approximately $2.2&#160;million at <em style="font: inherit;"> July 31, 2024</em>) from a bank in the U.A.E. As of <em style="font: inherit;"> July 31, 2024</em>&#160;the&#160;facility has&#160;an interest rate of approximately&#160;8.6%, and&#160;expired in <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">2024,</em> however, the Company has started&#160;the process to renew&#160;and extend&#160;this credit arrangement and the credit facility has continued without interruption and penalty.&#160;The Company had borrowed an aggregate of <span style="background-color:#ffffff;">$1.2</span>&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024</em> and $0.2 million&#160;as of <em style="font: inherit;"> January 31, 2024</em>, respectively, and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;<em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing availability of approximately $1.0 million and $1.9 million, respectively.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt; text-align: justify;">The Company has a revolving line for 20.5&#160;million U.A.E. Dirhams (approximately $5.6&#160;million&#160;at <em style="font: inherit;"> July 31, 2024</em>) from a bank in the U.A.E. As of <em style="font: inherit;"> July 31, 2024</em>&#160;the&#160;facility has an interest rate of approximately&#160;8.7%. The facility expired in <em style="font: inherit;"> August 2024, </em>however, the Company has started the process to renew and extend this credit arrangement and the credit facility has continued without interruption or penalty.&#160;The Company had borrowed an aggregate o<span style="background-color:#ffffff;">f $1.0&#160;</span>million&#160;as of <em style="font: inherit;"> July 31, 2024</em> and $0.1 million&#160;as of <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;<em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing availability of approximately <span style="background-color:#ffffff;">$1.2&#160;</span>million and<span style="background-color:#ffffff;"> $1.0 </span>million, respectively.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i>Egypt</i></p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <div>
    <div style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <div style="font-size:10pt">
      <div style="font-family:Times New Roman">
        In
       <em style="font: inherit;"> June 2021, </em>and as renewed or amended subsequently thereafter, the Company's Egyptian subsidiary entered into a credit arrangement with a bank in Egypt for a revolving line of
       100.0&#160;million Egyptian Pounds (approximately
       <span style="background-color:#ffffff">$2.1</span>
       <span style="background-color:#ffffff">&#160;million</span> at
       <em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by certain assets (such as accounts receivable) of the Company's Egyptian subsidiary. Among other covenants, the credit arrangement established a maximum leverage ratio allowable and restricted the Company's Egyptian subsidiary's ability to undertake any additional debt.&#160;As of
       <em style="font: inherit;"> July 31, 2024</em>, the&#160;facility has an interest rate of approximately
       <span style="background-color:#ffffff">&#160;20.8%</span>
       <span style="background-color:#ffffff;">and&#160;expires&#160;in <em style="font: inherit;"> November 2024.&#160;</em>As of&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company had substantially nothing outstanding with respect to this credit arrangement, and approximately $1.4 million outstanding at&#160;<em style="font: inherit;"> January 31, 2024</em>, which is presented as a component of current&#160;</span>maturities of long-term debt in the Company's consolidated balance sheets. Further, as of&#160;
       <em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;
       <em style="font: inherit;"> January 31, 2024</em>, the Company had unused borrowing capacity
       <span style="background-color:#ffffff;">of $2.1 million&#160;and $3.2 m</span>illion,&#160;respectively.&#160;
      </div>
     </div>
    </div>
    <div style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
      &#160;
    </div>
   </div>
   <div>
    <div style="font-size:10pt">
     <div style="font-family:Times New Roman">
       In
      <em style="font: inherit;"> December 2021, </em>the Company entered into a credit arrangement for project financing with a bank in Egypt for
      28.2&#160;million Egyptian Pounds. As this project has progressed and the Company has made collections, the facility has decreased to a current amount of&#160;
      2.1&#160;million Egyptian Pounds&#160;(approximatel
      <span style="background-color:#ffffff;">y $0.1&#160;mi</span>llion at
      <em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by the contract for a project being financed by the Company's Egyptian subsidiary.
      <span style="background-color:#ffffff">The facility has an interest rate of approximately&#160;11.0%</span>
      <span style="background-color:#ffffff">&#160;and, as of</span>&#160;
      <em style="font: inherit;"> November 2022, </em>is
      no longer available for borrowings by the Company. The facility will expire in connection with final customer balance collections and the completion of the project. The Company had approximately
      <span style="background-color:#ffffff;"> $0.1&#160;</span>million outstanding&#160;
      as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets.
     </div>
    </div>
   </div>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><i>Saudi Arabia</i></p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt; text-align: justify;">In <em style="font: inherit;"> March 2022, </em>the Company's Saudi Arabian subsidiary entered into a credit arrangement with a bank in Saudi Arabia for a revolving line of&#160;37.0&#160;million Saudi Riyals (approximately $9.9&#160;million at&#160;<em style="font: inherit;"> July 31, 2024</em>). This credit arrangement is in the form of project financing at rates competitive in Saudi Arabia. The line is secured by certain assets (such as accounts receivable) of the Company's Saudi Arabian subsidiary. The&#160;facility was renewed in <em style="font: inherit;"> May 2024 </em>with substantially the same terms and conditions and expires in <em style="font: inherit;"> May 2025. </em>As of <em style="font: inherit;"> July 31, 2024</em>, the facility has an interest rate of approximately&#160;9.7%.&#160;The Company had borrowed an aggregate o<span style="background-color:#ffffff;">f $2.6&#160;million&#160;and $3.2&#160;million&#160;</span>as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. The unused borrowing availability attributable to this credit arrangement at&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;<em style="font: inherit;"> January 31, 2024</em>, was <span style="background-color:#ffffff;">$6.3&#160;million and $6.1 </span>million, respectively.&#160;</p>
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>


   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;">These credit arrangements are in the form of overdraft facilities and project financing at rates competitive in the countries in which the Company operates. The lines are secured by certain equipment, certain assets (such as accounts receivable and inventory), and a guarantee by the Company. Some credit arrangement covenants require a minimum tangible net worth to be maintained, including maintaining certain levels of intercompany subordinated debt. In addition, some of the revolving credit facilities restrict payment of dividends or undertaking of additional debt. The Company guarantees only a portion of the subsidiaries' debt, including foreign debt. The amount of foreign subsidiary debt guaranteed by the Company was approxim<span style="background-color:#ffffff;">ately $1.1&#160;million and $0.1 million at&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.&#160;</span></p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company was in compliance with the covenants under the credit arrangements in the U.A.E., Egypt and Saudi Arabia as of <em style="font: inherit;"> July 31, 2024</em>, <span style="background-color:#ffffff;">with the exception of those arrangements that have expired or are set to expire and have <em style="font: inherit;">not</em> yet been renewed.&#160;Although certain of the arrangements have expired and the borrowings could be required to be repaid immediately by the banks, the Company is in regular communication with&#160;the respective banks throughout the renewal process and all of the&#160;arrangements have continued without interruption or penalty. </span>On <em style="font: inherit;"> July 31, 2024</em>, interest rates were based on (i) the Emirates Inter Bank Offered Rate&#160;plus 3.0% to 3.5% per annum for the U.A.E. credit arrangements, <em style="font: inherit;">two</em>&#160;of which have&#160;a minimum interest rate of 4.5% per annum; (ii)&#160;either the Central Bank of Egypt corporate loan rate plus 1.5% to 3.5% per annum or the stated interest rate in the agreements for the Egypt credit arrangements;&#160;and (iii) the Saudi Inter-Bank Offered Rate plus 3.5% for the Saudi Arabia credit arrangement. Based on these base rates, as of <em style="font: inherit;"> July 31, 2024</em>, the Company's interest rates ranged from&#160;8.6% to 20.8%, with a weighted average rate of 11.5%, and the Company had facility limits totaling <span style="background-color:#ffffff;">$24.7</span><span style="background-color:#ffffff;">&#160;million</span> under these credit arrangements. <span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">As of </span><em style="font: inherit;"> July 31, 2024</em><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">,&#160;</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">$7.1</span><span style="background-color:#ffffff;">&#160;million</span></span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> o</span><span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">f availability was used to support letters of credit to guarantee amounts committed for inventory purchases and for performance guarantees. Additionally, as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;">, the Company had borrow</span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">ed </span><span style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><span style="background-color:#ffffff;">$7.8</span><span style="background-color:#ffffff;">&#160;million</span>&#160;and had an additional <span style="background-color:#ffffff;">$12.6</span><span style="background-color:#ffffff;">&#160;million</span> of </span>borrowing remaining available under the foreign revolving credit arrangements. The foreign revolving lines balances were included as a component of current maturities of long-term debt in the Company's consolidated balance sheets&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">In <em style="font: inherit;"> June 2023, </em>the Company&#160;assumed a promissory note of approximately $2.8&#160;million in connection with the formation of the joint venture with Gulf Insulation Group<span style="background-color:#ffffff;"> (see Note <em style="font: inherit;">16</em>). I</span>n&#160;accordance with the promissory note, all principal is due and payable on the maturity date of <em style="font: inherit;"> April 9, 2026, </em>with the option to prepay, in whole or in part, at any time prior to the maturity date, without premium or penalty.</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Mortgages. </b></i>On <em style="font: inherit;"> July&#160;</em><em style="font: inherit;">28,</em> <em style="font: inherit;">2016,</em> the Company entered into a mortgage agreement&#160;secured by the Company's manufacturing facility located in Alberta, Canada&#160;that matures on <em style="font: inherit;"> December&#160;</em><span style="-sec-ix-hidden:c116841456">23,</span> <em style="font: inherit;">2042.</em> As of <em style="font: inherit;"> July 31, 2024</em>, the remaining balance on the mortgage in Canada is approximately CAD 5.9&#160;million (approximately $4.3&#160;million at <em style="font: inherit;"> July 31, 2024</em>).&#160;The interest rate is variable,&#160;and&#160;was 8.8%<span style="background-color:#ffffff;">&#160;</span>at <em style="font: inherit;"> July 31, 2024</em>. The principal balance is included as a component of long-term debt, less current maturities in the Company's consolidated balance sheets and is presented net of issuance costs of $0.1&#160;million&#160;as of <em style="font: inherit;"> July 31, 2024 </em>and <em style="font: inherit;"> January 31, 2024</em>, respectively.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481544/470-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481544/470-10-50-6<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 405<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477092/405-40-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 405<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477092/405-40-50-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 405<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477092/405-40-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 405<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477092/405-40-50-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 405<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477092/405-40-50-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(c))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 470<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/470/tableOfContent<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-2<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1C<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1C<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1C<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1C<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1E<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1E<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1I<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1I<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1I<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1I<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>29
<FILENAME>R18.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597281984656">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Leases<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LesseeOperatingAndFinanceLeasesTextBlock', window );">Lessee, Operating and Finance Leases [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">11</em>&#160;- Leases</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The Company accounts for its leases under ASC <em style="font: inherit;">842,</em> <i>Leases</i>.&#160;Under this guidance, arrangements meeting the definition of a lease are classified as operating or financing leases, and are recorded on the consolidated balance sheets.&#160;Operating leases are included in operating lease right-of-use (&#8220;ROU&#8221;) assets, operating lease liabilities short-term, and operating lease liabilities long-term&#160;in the Company's consolidated balance sheets. Finance leases are included in property, plant and equipment, current maturities of long-term debt, and long-term debt less current maturities in the Company's consolidated balance sheets.&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">ROU assets represent the Company's right to use an underlying asset for the lease term and lease liabilities represent the Company's obligation to make lease payments arising from the lease calculated by discounting fixed lease payments over the lease term at the rate implicit in the lease or the Company&#8217;s incremental borrowing rate.&#160; Lease liabilities are increased by interest and reduced by payments each period, and the ROU asset is amortized over the lease term.&#160; For operating leases, interest on the lease liability and the amortization of the ROU asset result in straight-line rent expense over the lease term.&#160; For finance leases, interest on the lease liability and the amortization of the ROU asset results in front-loaded expense over the lease term.&#160; Variable lease expenses are recorded when incurred.&#160;ROU assets and liabilities are recognized at the commencement date of the lease based on the present value of lease payments over the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">As most of the Company's leases do <em style="font: inherit;">not</em> provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at the commencement date in determining the present value of lease payments.&#160;The incremental borrowing rate is the rate of interest that the Company would have to pay to borrow on a collateralized basis over a similar term and amount equal to the lease payments in a similar economic environment.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">In calculating the ROU asset and lease liability, the Company elects to combine lease and non-lease components. Additionally, the Company excludes short-term leases having an initial term&#160;of <em style="font: inherit;">12</em> months or less in accordance with&#160;the new guidance as an accounting policy election,&#160;and recognizes rent expense on a straight-line basis over the lease term.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Operating Leases.&#160;</b></i>In <em style="font: inherit;"> August 2020, </em>the Company entered into a new lease in Abu Dhabi for land upon which the Company built a facility. The initial annual payments were approximately 1.2 million U.A.E. Dirhams (approximatel<span style="background-color:#ffffff;">y $0.3&#160;</span>million at&#160;<em style="font: inherit;"> July 31, 2024</em>), inclusive of rent, escalation clauses, and other common charges contained in the agreement. The lease expires in <em style="font: inherit;"> August 2050.&#160;</em></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><span style="background-color:#ffffff;">In <em style="font: inherit;"> March </em>and <em style="font: inherit;"> December 2022, </em>the Company served&#160;Notices of Termination to its lessor for the Company's lease of land and buildings in Fujairah in the U.A.E.&#160;The Company served the Notices of Termination in connection with the Company's intended relocation to a different facility in Abu Dhabi. The Company vacated portions of the leased space in <em style="font: inherit;"> December 2022 </em>and expects&#160;to vacate the remaining space in <em style="font: inherit;"> December 2024. </em>The <em style="font: inherit;">first</em> Notice of Termination required that the Company pay an additional amount equal to <em style="font: inherit;">three</em> months' rent after that termination to enable the lessor to prepare the assets for lease by another party.&#160;As a result of the termination, the Company has recognized adjustments to the amounts recorded in the consolidated financial statements as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color:#ffffff;">. The termination resulted in decreases of $0.4&#160;million, $6.0 million and $5.5&#160;million to operating lease liability short-term, operating lease liability long-term and operating lease right-of-use asset, respectively, in the consolidated balance sheets as of </span><em style="font: inherit;"> July 31, 2024</em><span style="background-color:#ffffff;">.&#160;There were <em style="font: inherit;">no</em> other adjustments in connection with these terminations for the year ended <em style="font: inherit;"> January 31, 2024, </em>or during the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>.&#160;</span></p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">At <em style="font: inherit;"> July 31, 2024</em>, the Company had total operating lease liabilities of <span style="background-color:#ffffff">$7.7&#160;</span>million&#160;and operating ROU assets of <span style="background-color:#ffffff">$6.9</span><span style="background-color:#ffffff">&#160;million</span>, which are reflected in the consolidated balance sheets.</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"><i><b>Finance Leases.&#160;</b></i>The Company has several lease agreements, with lease terms of <span style="-sec-ix-hidden:c116841494">one</span> to <span style="-sec-ix-hidden:c116841495">thirty</span>&#160;years, which consist of real estate, vehicles and office equipment leases. These leases do <em style="font: inherit;">not</em> require any contingent rental payments, impose any financial restrictions or contain any residual value guarantees.&#160; Certain of the Company&#8217;s leases include renewal options and escalation clauses; renewal options have <em style="font: inherit;">not</em> been included in the calculation of the lease liabilities and ROU&#160;assets as the Company is <em style="font: inherit;">not</em> reasonably certain to exercise the options.&#160; The Company does <em style="font: inherit;">not</em> have any arrangements where it acts as a lessor.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">At&#160;<em style="font: inherit;"> July 31, 2024</em>, the Company also had finance lease liabilities of $0.1&#160;million included in current maturities of long-term debt and long-term debt less current maturities, and financial ROU assets of $0.3&#160;million which were included in property plant and equipment, net of accumulated depreciation in the consolidated balance sheets.&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>


   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Supplemental balance sheet information related to leases is as follows:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Operating and Finance leases</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance leases assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Property and Equipment - gross</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">970</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(595</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(536</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and Equipment - net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">347</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">434</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">113</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Finance lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">62</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">113</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating lease ROU assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">6,938</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">6,467</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">965</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">914</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,689</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Total operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,654</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,184</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Total lease costs consist of the following:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 18.8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Lease costs</b></p> </td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 33.2%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Consolidated Statements of Operations Classification</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finance Lease Costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Amortization of ROU assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">37</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">33</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Interest on lease liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Interest expense</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Operating lease costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">426</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">893</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">882</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Short-term lease costs (1)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">236</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">245</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Sub-lease income</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(20</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Total Lease costs</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">570</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">501</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,207</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,179</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">(<em style="font: inherit;">1</em>)&#160;Includes variable lease costs, which are <em style="font: inherit;">not</em> material.</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>


   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Supplemental cash flow information related to leases is&#160;as follows:</p>
   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="7" rowspan="1" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Cash paid for amounts included in the measurement of lease liabilities:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Financing cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">154</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,045</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">890</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><b>ROU assets obtained in exchange for new lease obligations:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating leases liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">1,041</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,484</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>

   <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Weighted-average lease terms and discount rates are as follows:&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average remaining lease terms (in years):</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2.8</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">12.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average discount rates:</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">10.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Maturities of lease liabilities&#160;as of <em style="font: inherit;"> July 31, 2024</em>, are&#160;as follows:</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Operating Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Finance Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the six months ending January 31, 2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,012</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,993</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">33</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,980</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">36</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,963</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2029</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,617</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2030</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">612</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,982</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16,159</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Less: amount representing interest</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(8,505</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Total lease liabilities at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,654</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">Rent expense on operating leases, which is recorded on straight-line basis, was&#160;$0.6&#160;<span style="background-color:#ffffff;">million</span><span style="background-color:#ffffff;">&#160;</span>for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> July 31, 2024</em>&#160;and <em style="font: inherit;">2023</em>, respectively.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LesseeOperatingAndFinanceLeasesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for operating and finance leases of lessee.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LesseeOperatingAndFinanceLeasesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>30
<FILENAME>R19.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597308535696">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Restricted Cash<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsDisclosureTextBlock', window );">Cash and Cash Equivalents Disclosure [Text Block]</a></td>
<td class="text">
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><b>Note <em style="font: inherit;">12</em>&#160;- Restricted cash</b></p>
   <p style="text-align: justify; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;">&#160;</p>
   <div style="font-size:10pt">
    <div style="font-family:Times New Roman">
      Restricted cash held by foreign subsidiaries is related to fixed deposits that also serve as security deposits and guarantees:&#160;
    </div>
    <div style="font-family:Times New Roman">
      &#160;
    </div>
    <div style="font-family:Times New Roman">

      <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9,455</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted cash</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,426</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,395</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash, cash equivalents and restricted cash shown in the statement of cash flows</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,881</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7,240</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

     <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">&#160;</p>
    </div>
   </div>

   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for cash and cash equivalent footnotes, which may include the types of deposits and money market instruments, applicable carrying amounts, restricted amounts and compensating balance arrangements. Cash and equivalents include: (1) currency on hand (2) demand deposits with banks or financial institutions (3) other kinds of accounts that have the general characteristics of demand deposits (4) short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Generally, only investments maturing within three months from the date of acquisition qualify.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>31
<FILENAME>R20.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194271728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 13 - Fair Value<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Disclosures [Text Block]</a></td>
<td class="text">
   <p style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; margin: 0pt;"><b>Note <em style="font: inherit;">13</em>&#160;- Fair value </b></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;">The carrying values of cash and cash equivalents, accounts receivable and accounts payable are considered reasonable estimates of fair value due to their short-term nature. The carrying amount of the Company's short-term debt, revolving lines of credit and long-term debt approximate fair value because&#160;the majority of the amounts outstanding accrue interest at variable market rates.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 107<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482078/820-10-55-107<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 100<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482078/820-10-55-100<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-6A<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2E<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2E<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6A<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-6A<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6A<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-6A<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6A<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-6A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6A<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-6A<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 940<br> -SubTopic 820<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478119/940-820-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>32
<FILENAME>R21.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195349872">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 14 - Recent Accounting Pronouncements<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock', window );">Accounting Standards Update and Change in Accounting Principle [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"><b>Note <em style="font: inherit;">14</em>&#160;- Recent accounting pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">In <em style="font: inherit;"> November 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em> <em style="font: inherit;">2023</em>-<em style="font: inherit;">07,</em> <i>Segment Reporting</i> (<i>Topic <em style="font: inherit;">280</em></i>): <i>Improvements to Reportable Segment Disclosures</i>. The standard update requires additional disclosures, including further details about segment expenses regarding a public entity's reportable segments on an annual and interim basis. The additional segment disclosures are effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2023, </em>and interim periods within fiscal years beginning after <em style="font: inherit;"> December 15, 2024. </em>The Company is still evaluating the impact of these updated disclosure requirements on its statement of financial position or results of operations.</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">In <em style="font: inherit;"> December 2023, </em>the FASB issued ASU <em style="font: inherit;">No.</em> <em style="font: inherit;">2023</em>-<em style="font: inherit;">09,</em> <i>Income Taxes</i> (<i>Topic <em style="font: inherit;">740</em></i>): <i>Improvements to Income Tax Disclosures</i>. Pursuant to this standard update, companies are required to provide additional information which is&#160;primarily attributable to the rate reconciliation and income taxes paid. The new income tax disclosures are effective for fiscal years beginning after <em style="font: inherit;"> December 15, 2024. </em>The Company is still evaluating&#160;this standard update&#160;but does <em style="font: inherit;">not</em> expect it to have a material impact on its statement of financial position or results of operations.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for change in accounting principle. Includes, but is not limited to, nature, reason, and method of adopting amendment to accounting standards or other change in accounting principle.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476173/280-10-65-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 105<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479343/105-10-65-7<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 848<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483550/848-10-65-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 848<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483550/848-10-65-2<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 848<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483550/848-10-65-1<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(iii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(iv)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480016/944-40-65-2<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 5<br> -Subparagraph (SAB Topic 11.M.Q2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480530/250-10-S99-5<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 6<br> -Subparagraph (i)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480528/815-20-65-6<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 4<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479654/326-10-65-4<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 4<br> -Subparagraph (e)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479654/326-10-65-4<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483194/926-20-65-2<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483194/926-20-65-2<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 926<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483194/926-20-65-2<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480530/250-10-S99-6<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Name Accounting Standards Codification<br> -Topic 250<br> -Publisher FASB<br> -URI https://asc.fasb.org/250/tableOfContent<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R22.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597281917520">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Treasury Stock<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TreasuryStockTextBlock', window );">Treasury Stock [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"><b>Note <em style="font: inherit;">15</em>&#160;- Treasury stock</b></p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">&#160;</p>
   <p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;">The repurchase program approved on <em style="font: inherit;"> October 4, 2021 </em>authorized the Company to use up to&#160;$3.0&#160;million&#160;for the purchase of its outstanding shares of common stock. Stock&#160;repurchases were permitted to be executed through open market or privately negotiated transactions, depending upon&#160;current market conditions and other factors. On <em style="font: inherit;"> December 7, 2022 </em>the Board of Directors authorized the use of $1.0 million&#160;remaining under the share repurchase program previously approved on <em style="font: inherit;"> October 4, 2021 </em>that expired on <em style="font: inherit;"> October 3, 2022. </em>During the <em style="font: inherit;">twelve</em>&#160;months ended&#160;<em style="font: inherit;"> January 31, 2024</em>, the Company used the remaining $1.0 million authorized to repurchase its outstanding shares of common stock. Accordingly, t<span style="background-color:#ffffff;">here was no repurchase activity with respect to the Company's shares of common stock during the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>.</span></p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TreasuryStockTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for treasury stock, including, but not limited to, average cost per share, description of share repurchase program, shares repurchased, shares held for each class of treasury stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/505-30/tableOfContent<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TreasuryStockTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R23.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194268464">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Noncontrolling Interest<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MinorityInterestDisclosureTextBlock', window );">Noncontrolling Interest Disclosure [Text Block]</a></td>
<td class="text">
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"><b>Note <em style="font: inherit;">16</em>&#160;- Noncontrolling interest</b></p>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">On <em style="font: inherit;"> June 1, 2023, </em>the Company closed on its formation of a&#160;joint venture ("the JV", and the agreement governing the JV, "the JV Agreement")&#160;with Gulf Insulation Group ("GIG"), a leading provider of pre-insulated piping systems and pipe fabrication, in which the Company acquired a 60% controlling financial interest and contributed assets consisting of a building and equipment.&#160;The JV is a limited liability company named Perma Pipe Gulf Arabia Industry and&#160;is a closed joint stock company established under the laws of the Kingdom of Saudi Arabia. The JV's&#160;capital is comprised of ordinary shares with 60% owned by the Company and remaining 40% owned by GIG. The Company expects this collaborative business arrangement to result in expanding its market presence in Saudi Arabia, Kuwait, and Bahrain. The primary business activities of the JV include the manufacture and sale of the pre-insulated piping systems and pipe coating services. GIG acquired its&#160;40% non-controlling interest by contributing assets to the JV&#160;of approximately $6.8&#160;million in fair value, mainly consisting of an idle building and equipment. The fair value of the net assets contributed was determined through the use of a <em style="font: inherit;">third</em>-party appraiser using the indirect cost method.</p>
   <div style="font-size: 10pt; margin: 0pt;">
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Pursuant to the applicable guidance in ASC <em style="font: inherit;">805,</em> <i>Business Combinations and Noncontrolling Interests</i>, the Company determined that the transaction did <em style="font: inherit;">not</em> meet the necessary conditions to be considered a business as the set of assets acquired did <em style="font: inherit;">not</em> contain an organized workforce and therefore was recorded as an asset acquisition. The assets transferred by the Company to the JV were recorded at historical cost, and <em style="font: inherit;">no</em> gain was recognized as a result of this exchange due&#160;to the Company having&#160;a controlling interest in the JV. The Company&#8217;s measurement of the acquired assets is comprised of the fair value of the contributed net assets given up by the Company and the fair value of the non-controlling interest excluding the contributed assets. The non-controlling interest attributable to the other party was recorded as of the investment date and was measured as part of the carrying amount of the ownership interest in the net assets given up by the Company plus the fair value of the non-controlling interest excluding the contributed assets. <em style="font: inherit;">No</em> gain or loss was recognized as a result of this exchange. The Company also assumed a promissory note payable to GIG&#160;issued as part of the formation of the JV in the principal amount of $2.8&#160;million. The principal amount is presented within the Long-term debt, less current maturities caption in the Company's consolidated balance sheets.&#160;The Company also has a promissory note due from the JV that was issued as part of the formation of the JV in the amount of approximately $4.2&#160;million and&#160;eliminates in consolidation.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company has a 60% controlling financial interest in the JV&#160;which is <em style="font: inherit;">not</em> considered a wholly owned subsidiary. Accordingly, there remains a minority portion of the equity interest that is owned by a <em style="font: inherit;">third</em> party, GIG. Pursuant to the applicable guidance contained in ASC <em style="font: inherit;">810,</em> <i>Consolidations</i>, the balance sheets&#160;and operating activities of this investment are&#160;included in the Company's consolidated financial statements. T<span style="background-color:#ffffff;">he carrying amount of the assets and liabilities of the JV that are consolidated by the Company totaled $26.4&#160;million&#160;and $15.5&#160;million, respectively, as of&#160;<em style="font: inherit;"> July 31, 2024</em>.</span></p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company adjusts net income in the consolidated statements of operations to exclude the proportionate share of results that is attributable to the non-controlling interest. Additionally, the Company presents the proportionate share that is attributable to the redeemable non-controlling interest as temporary equity within the consolidated balance sheets. This mezzanine presentation is the result of the non-controlling interest being subject to a put option that is <em style="font: inherit;">not</em> solely within the Company's control and in connection with the equity shares of the business arrangement that is redeemable at any time after <em style="font: inherit;">five</em> years following the date of formation. The redemption amount per the JV Agreement is&#160;at fair value of the non-controlling interest which represents the fair value of ordinary shares of the JV that are&#160;owned by GIG. Further, neither the call option nor put option contained in the JV Agreement met the definition of a derivative as a result of <em style="font: inherit;">not</em> containing a net settlement provision and the shares <em style="font: inherit;">not</em> being readily convertible to cash, thereby being considered embedded with respect to non-controlling interest and <em style="font: inherit;">not</em> a freestanding instrument.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">As a result of the non-controlling interest being subject to redemption rights that are <em style="font: inherit;">not</em> entirely within the Company's control, it was concluded that the necessary conditions were met to be accounted for in accordance with ASC <em style="font: inherit;">480,</em> <i>Distinguishing Liabilities from Equity</i>. Pursuant to this accounting standard, the Company determined that the only criteria for the security&#160;to become redeemable is the passage of time and, therefore, is considered probable of redemption. The Company made a policy election to measure changes in the non-controlling interest immediately as they occur and adjust the carrying amount of non-controlling interest equal to its redemption amount as the non-controlling interest has <em style="font: inherit;">no</em> stated fixed price or fixed date. As such, at each subsequent balance sheet date following the formation of the JV,&#160;the Company must determine whether further adjustment is required&#160;to increase the carrying value of the redeemable non-controlling interest. If the Company determines that the fair value of the redeemable non-controlling interest exceeds its carrying value, an adjustment is made to reflect this change. However, if the value is determined to be less than its carrying value, such&#160;adjustment is limited to its original carrying value at the formation of the&#160;business arrangement. Additionally, adjustments made to reflect the change&#160;in the value of the redeemable non-controlling interest are offset&#160;against&#160;permanent&#160;equity within the Company's consolidated balance sheets.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">Net income attributable to GIG was&#160;$1.0&#160;million and $0.1&#160;million for the <em style="font: inherit;">three</em>&#160;months ended&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;">2023</em>, respectively. Net income attributable to GIG was $1.3&#160;million and $0.1&#160;million for the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>&#160;and&#160;<em style="font: inherit;">2023</em>, respectively. The proportionate share of net income was accounted for as a reduction in deriving net income attributable to common stock in the Company's consolidated statements of operations.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The Company is the ultimate parent of the JV through its <em style="font: inherit;">60%</em> controlling financial interest and as part of the JV Agreement&#160;majority control of the operational activities of the JV and&#160;<em style="font: inherit;">no</em> joint control exists. The JV Agreement has <em style="font: inherit;">no</em> veto or kickout rights and board voting is proportional to the ownership interest. Certain activities do include a <em style="font: inherit;">two</em>-thirds majority affirmative vote of shareholders of the JV and include acquiring another company, establishing new subsidiaries, entering another partnership or joint venture, engaging in any merger or materially changing&#160;the business of the JV. These are considered protective rights. The <em style="font: inherit;">60%</em> equity ownership of the JV by the Company allows it to receive its proportionate share of losses and residual returns.</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
    <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">The non-controlling interest as measured at fair value was&#160;$8.1&#160;million and $6.3&#160;million, and was&#160;recorded within temporary equity at&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively. The change in non-controlling interest consists of $1.3&#160;million in current year net income attributable to non-controlling interest, and approximately $0.5&#160;million as an adjustment in the carrying value of the redeemable non-controlling interest pertaining to the business arrangement. In addition, there were <em style="font: inherit;">no</em> dividends or any other form of distributions from non-controlling interest for the period ended&#160;<em style="font: inherit;"> July 31, 2024</em> and&#160;<em style="font: inherit;"> January 31, 2024</em>, respectively.&#160;</p>
   </div>
   <p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;">&#160;</p>


  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MinorityInterestDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for noncontrolling interest in consolidated subsidiaries, which could include the name of the subsidiary, the ownership percentage held by the parent, the ownership percentage held by the noncontrolling owners, the amount of the noncontrolling interest, the location of this amount on the balance sheet (when not reported separately), an explanation of the increase or decrease in the amount of the noncontrolling interest, the noncontrolling interest share of the net Income or Loss of the subsidiary, the location of this amount on the income statement (when not reported separately), the nature of the noncontrolling interest such as background information and terms, the amount of the noncontrolling interest represented by preferred stock, a description of the preferred stock, and the dividend requirements of the preferred stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -Name Accounting Standards Codification<br> -Publisher FASB<br> -URI https://asc.fasb.org/810/tableOfContent<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MinorityInterestDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>35
<FILENAME>R24.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195989184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Insider Trading Arrangements<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_InsiderTradingArrLineItems', window );"><strong>Insider Trading Arr Line Items</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_MtrlTermsOfTrdArrTextBlock', window );">Material Terms of Trading Arrangement [Text Block]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a href="#" id="partii"></a>PART II <span style="-sec-ix-hidden:c116841723"><span style="-sec-ix-hidden:c116841724"><span style="-sec-ix-hidden:c116841725"><span style="-sec-ix-hidden:c116841726">OTHER</span></span></span></span> INFORMATION</b></p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_Rule10b51ArrAdoptedFlag', window );">Rule 10b5-1 Arrangement Adopted [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_NonRule10b51ArrAdoptedFlag', window );">Non-Rule 10b5-1 Arrangement Adopted [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_Rule10b51ArrTrmntdFlag', window );">Rule 10b5-1 Arrangement Terminated [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ecd_NonRule10b51ArrTrmntdFlag', window );">Non-Rule 10b5-1 Arrangement Terminated [Flag]</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_InsiderTradingArrLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_InsiderTradingArrLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_MtrlTermsOfTrdArrTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_MtrlTermsOfTrdArrTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_NonRule10b51ArrAdoptedFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_NonRule10b51ArrAdoptedFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_NonRule10b51ArrTrmntdFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_NonRule10b51ArrTrmntdFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_Rule10b51ArrAdoptedFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_Rule10b51ArrAdoptedFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ecd_Rule10b51ArrTrmntdFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-K<br> -Number 229<br> -Section 408<br> -Subsection a<br> -Paragraph 1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ecd_Rule10b51ArrTrmntdFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ecd_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R25.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597281980000">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">New Accounting Pronouncements, Policy [Policy Text Block]</a></td>
<td class="text"><p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Significant New Accounting Policies</b></p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Refer to the Company's Annual Report on Form <em style="font: inherit;">10</em>-K for the year ended <em style="font: inherit;"> January 31, 2024</em>&#160;as filed with the SEC on <em style="font: inherit;"> April 26, 2024&#160;</em>for discussion of the Company's significant accounting policies.</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> July 31, 2024</em>, the Company did <em style="font: inherit;">not</em> adopt or make changes to any new or existing accounting policies.</p><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>37
<FILENAME>R26.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195350928">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Revenue Recognition (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2024</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">2023</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Sales</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">% of Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Products</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,795</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2,146</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">8</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">4,988</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Specialty Piping Systems and Coating</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under input method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">12,613</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">34</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">12,801</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">22,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">23,139</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">36</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Revenue recognized under output method</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">22,105</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">20,194</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">43,034</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">36,671</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Total</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">37,513</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">35,141</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">71,834</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">64,798</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock', window );">Schedule of Assumptions for Long-Duration Contracts by Product and Guarantee [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Costs incurred on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">17,686</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">21,912</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Estimated earnings</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">11,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Earned revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">29,796</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">33,182</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Less billings to date</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">27,415</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">30,580</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,602</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Balance sheet classification</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,085</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,097</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(704</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(495</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Costs in excess of billings, net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,381</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">2,602</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the underlying assumptions and percentages or rates used in determining the fair value of guarantee obligations for each type of long-duration contract.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480081/944-40-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 944<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480081/944-40-50-7<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 944<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479808/944-20-55-15<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>38
<FILENAME>R27.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194237152">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Inventories (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock', window );">Schedule of Inventory, Current [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Raw materials</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">14,777</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">13,787</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Work in process</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">574</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">611</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finished goods</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,275</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,022</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Subtotal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,626</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,420</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Less allowance</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">803</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">879</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Inventories</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">15,541</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(c))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483489/210-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfInventoryCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>39
<FILENAME>R28.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196644208">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Impairment of Long-lived Assets (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfGoodwillTextBlock', window );">Schedule of Goodwill [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Foreign exchange change effect</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(66</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,156</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfGoodwillTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482548/350-20-55-24<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 6: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 10: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 11: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1A<br><br>Reference 12: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfGoodwillTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R29.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597190319536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock', window );">Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">177</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">227</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">396</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">456</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock', window );">Share-Based Payment Arrangement, Option, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Options</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Exercise Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Remaining Contractual Term (In years)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">22</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">11.15</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">0.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Exercised</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(1</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6.85</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Expired or forfeited</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(17</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12.41</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding and exercisable at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6.89</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock', window );">Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Restricted Shares</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Weighted Average Price (Per share)</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Aggregate Intrinsic Value</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at January 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">222</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.33</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,078</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Granted</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">108</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">8.81</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Vested and issued</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">(73</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9.36</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Forfeited or retired for taxes</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(27</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">10.25</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="text-align: right; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">230</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">9.05</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2,083</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -SubTopic 10<br> -Topic 718<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -SubTopic 10<br> -Topic 718<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>41
<FILENAME>R30.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597193651408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Earnings Per Share (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock', window );">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Basic weighted average common shares outstanding at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,954</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,029</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,017</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Dilutive effect of equity compensation plans</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Weighted average common shares outstanding assuming full dilution</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,125</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,139</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7,987</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">8,017</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">79</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">114</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Stock options and restricted stock with exercise prices or grant date prices below the average market prices</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">171</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">57</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Net income (loss) attributable to common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,289</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,022</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">4,732</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(100</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Earnings (loss) per share attributable to common stock</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.13</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(0.01</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.13</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">0.59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(0.01</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>42
<FILENAME>R31.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195821360">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Leases (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock', window );">Supplemental Balance Sheet Information Related to Leases [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Operating and Finance leases</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance leases assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Property and Equipment - gross</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">942</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">970</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Accumulated depreciation and amortization</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(595</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(536</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Property and Equipment - net</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">347</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">434</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Finance lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;">Finance lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">113</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Finance lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">62</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;">Total finance lease liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">113</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease assets:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating lease ROU assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">6,938</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">6,467</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;">Operating lease liabilities:</p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability short-term</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">965</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">914</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0pt;">Operating lease liability long-term</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,689</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">6,270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Total operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,654</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,184</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LeaseCostTableTextBlock', window );">Lease, Cost [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 18.8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><b>Lease costs</b></p> </td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 33.2%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">Consolidated Statements of Operations Classification</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Finance Lease Costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Amortization of ROU assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">37</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">33</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">75</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Interest on lease liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Interest expense</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Operating lease costs</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">426</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">893</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">882</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Short-term lease costs (1)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Cost of sales, SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">59</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">236</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">245</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;">Sub-lease income</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">SG&amp;A expenses</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(20</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td colspan="2" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"><em style="font: inherit;">Total Lease costs</em></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">570</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">501</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,207</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1,179</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock', window );">Supplemental Cash Flow Information Related Leases [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="7" rowspan="1" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">Six Months Ended July 31,</em></em></em></b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2024</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">2023</em></b></p> </td><td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Cash paid for amounts included in the measurement of lease liabilities:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Financing cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">154</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">3</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating cash outflows from operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,045</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">890</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">&#160;</em></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 70%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"><b>ROU assets obtained in exchange for new lease obligations:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin: 0pt; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 9pt;">Operating leases liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">1,041</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">3,484</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock', window );">Weighted-average Lease Terms and Discount Rates [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average remaining lease terms (in years):</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2.8</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">12.7</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt;"><b>Weighted-average discount rates:</b></p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Finance leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">6.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;">Operating leases</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">10.4</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock', window );">Finance and Operating Lease, Liability, Maturity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Operating Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><b><em style="font: inherit;">Finance Leases</em></b></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the six months ending January 31, 2025</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,012</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">16</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2026</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,993</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">33</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2027</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,980</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">36</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2028</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,963</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2029</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">1,617</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">For the year ended January 31, 2030</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">612</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Thereafter</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,982</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Total lease payments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16,159</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Less: amount representing interest</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">(8,505</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"> <p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;">Total lease liabilities at July 31, 2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">7,654</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">94</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of finance and operating lease liability maturity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of supplemental balance sheet information related to leases.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of supplemental cash flow information related leases.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of weighted-average lease terms and discount rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseCostTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseCostTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>43
<FILENAME>R32.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194248448">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Restricted Cash (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock', window );">Restrictions on Cash and Cash Equivalents [Table Text Block]</a></td>
<td class="text">
      <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">July 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">January 31, 2024</em></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">9,455</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Restricted cash</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,426</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,395</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Cash, cash equivalents and restricted cash shown in the statement of cash flows</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,881</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7,240</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
     <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of cash and cash equivalents restricted as to withdrawal or usage.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(1)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-8<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>44
<FILENAME>R33.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194291184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Business Segment Reporting (Details Textual)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jul. 31, 2024</div></th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NumberOfReportableSegments', window );">Number of Reportable Segments</a></td>
<td class="nump">1<span></span>
</td>
</tr>
</table>
<div style="display: none;"><table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NumberOfReportableSegments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 47<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-47<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 54<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-54<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 18<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-18<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NumberOfReportableSegments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R34.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195870960">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Accounts Receivable (Details Textual)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1">103 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jul. 31, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th"><div>Jan. 31, 2024</div></th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2015 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Increase (Decrease) in Accounts Receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (6,090)<span></span>
</td>
<td class="nump">$ 9,865<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember', window );">Revenue Benchmark [Member] | Customer Concentration Risk [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_NumberOfMajorCustomers', window );">Number of Major Customers</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember', window );">Accounts Receivable [Member] | Customer Concentration Risk [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_NumberOfMajorCustomers', window );">Number of Major Customers</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancingReceivablesPeriodPastDueAxis=us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember', window );">Financial Asset, Equal to or Greater than 90 Days Past Due [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNet', window );">Accounts Receivable, after Allowance for Credit Loss</a></td>
<td class="nump">$ 1,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,800<span></span>
</td>
<td class="nump">$ 41,900<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Increase (Decrease) in Accounts Receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(300)<span></span>
</td>
<td class="num">$ (600)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(40,100)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivable', window );">Accounts Receivable, Allowance for Credit Loss</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinancingReceivablesPeriodPastDueAxis=us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember', window );">Financial Asset, Equal to or Greater than 90 Days Past Due [Member] | Other Noncurrent Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccountsReceivableNet', window );">Accounts Receivable, after Allowance for Credit Loss</a></td>
<td class="nump">$ 1,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_NumberOfMajorCustomers">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_NumberOfMajorCustomers</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 310<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477802/946-310-45-1<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(5)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 954<br> -SubTopic 310<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479196/954-310-45-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479344/326-20-45-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481962/310-10-50-4<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479319/326-20-50-13<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479319/326-20-50-13<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -SubTopic 10<br> -Topic 230<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancingReceivablesPeriodPastDueAxis=us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancingReceivablesPeriodPastDueAxis=us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=us-gaap_OtherNoncurrentAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=us-gaap_OtherNoncurrentAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>46
<FILENAME>R35.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597194951360">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Revenue Recognition (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod', window );">Costs Incurred for Uncompleted Contracts, Anticipated Collection Period (Year)</a></td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UnbilledReceivablesCurrent', window );">Unbilled Receivables, Current</a></td>
<td class="nump">$ 17,850<span></span>
</td>
<td class="nump">$ 16,597<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the duration of time within which costs incurred for uncompleted contracts are anticipated to be collected.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnbilledReceivablesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnbilledReceivablesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R36.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597199326736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Revenue Recognition - Revenues by Revenue Class (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product</a></td>
<td class="nump">$ 37,513<span></span>
</td>
<td class="nump">$ 35,141<span></span>
</td>
<td class="nump">$ 71,834<span></span>
</td>
<td class="nump">$ 64,798<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product, percent</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="nump">100.00%<span></span>
</td>
<td class="nump">100.00%<span></span>
</td>
<td class="nump">100.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ProductOrServiceAxis=us-gaap_ProductMember', window );">Product [Member] | Transferred at Point in Time [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product</a></td>
<td class="nump">$ 2,795<span></span>
</td>
<td class="nump">$ 2,146<span></span>
</td>
<td class="nump">$ 6,048<span></span>
</td>
<td class="nump">$ 4,988<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product, percent</a></td>
<td class="nump">7.00%<span></span>
</td>
<td class="nump">7.00%<span></span>
</td>
<td class="nump">8.00%<span></span>
</td>
<td class="nump">7.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ProductOrServiceAxis=ppih_SpecialtyPipingSystemsAndCoatingMember', window );">Specialty Piping Systems And Coating [Member] | Transferred at Point in Time Using Input Method [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product</a></td>
<td class="nump">$ 12,613<span></span>
</td>
<td class="nump">$ 12,801<span></span>
</td>
<td class="nump">$ 22,752<span></span>
</td>
<td class="nump">$ 23,139<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product, percent</a></td>
<td class="nump">34.00%<span></span>
</td>
<td class="nump">36.00%<span></span>
</td>
<td class="nump">32.00%<span></span>
</td>
<td class="nump">36.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ProductOrServiceAxis=ppih_SpecialtyPipingSystemsAndCoatingMember', window );">Specialty Piping Systems And Coating [Member] | Transferred at Point in Time Using Output Method [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product</a></td>
<td class="nump">$ 22,105<span></span>
</td>
<td class="nump">$ 20,194<span></span>
</td>
<td class="nump">$ 43,034<span></span>
</td>
<td class="nump">$ 36,671<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax', window );">Sales by product, percent</a></td>
<td class="nump">59.00%<span></span>
</td>
<td class="nump">57.00%<span></span>
</td>
<td class="nump">60.00%<span></span>
</td>
<td class="nump">57.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the percentage of revenue from contracts with customers that is attributable to a specified product or service.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-41<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 924<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479941/924-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-5<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 42<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-42<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 40<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-40<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=us-gaap_ProductMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=us-gaap_ProductMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredAtPointInTimeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TimingOfTransferOfGoodOrServiceAxis=us-gaap_TransferredAtPointInTimeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=ppih_SpecialtyPipingSystemsAndCoatingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=ppih_SpecialtyPipingSystemsAndCoatingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=ppih_TransferredAtPointInTimeUsingInputMethodMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TimingOfTransferOfGoodOrServiceAxis=ppih_TransferredAtPointInTimeUsingInputMethodMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TimingOfTransferOfGoodOrServiceAxis=ppih_TransferredAtPointInTimeUsingOutputMethodMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TimingOfTransferOfGoodOrServiceAxis=ppih_TransferredAtPointInTimeUsingOutputMethodMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R37.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196317424">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CostsIncurredOnUncompletedContracts', window );">Costs incurred on uncompleted contracts</a></td>
<td class="nump">$ 17,686<span></span>
</td>
<td class="nump">$ 21,912<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_EstimatedEarnings', window );">Estimated earnings</a></td>
<td class="nump">12,110<span></span>
</td>
<td class="nump">11,270<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_EarnedRevenue', window );">Earned revenue</a></td>
<td class="nump">29,796<span></span>
</td>
<td class="nump">33,182<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_BillingsToDate', window );">Less billings to date</a></td>
<td class="nump">27,415<span></span>
</td>
<td class="nump">30,580<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CostsInExcessOfBillingsNet', window );">Costs in excess of billings, net</a></td>
<td class="nump">2,381<span></span>
</td>
<td class="nump">2,602<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerAssetNet', window );">Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts</a></td>
<td class="nump">3,085<span></span>
</td>
<td class="nump">3,097<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiability', window );">Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts</a></td>
<td class="num">(704)<span></span>
</td>
<td class="num">(495)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_CostsInExcessOfBillingsNet', window );">Costs in excess of billings, net</a></td>
<td class="nump">$ 2,381<span></span>
</td>
<td class="nump">$ 2,602<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_BillingsToDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Billings to date related to percentage of completion</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_BillingsToDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_CostsInExcessOfBillingsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Costs in excess of billings, net related to percentage of completion</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_CostsInExcessOfBillingsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_CostsIncurredOnUncompletedContracts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Costs incurred on uncompleted contracts related to percentage of completion</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_CostsIncurredOnUncompletedContracts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_EarnedRevenue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of earned revenue.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_EarnedRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_EstimatedEarnings">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Estimated earnings related to percentage of completion</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_EstimatedEarnings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-3<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-8<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerAssetNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479806/606-10-50-8<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 606<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479837/606-10-45-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>49
<FILENAME>R38.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196088016">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 5 - Inventories - Schedule of Inventory (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryRawMaterials', window );">Raw materials</a></td>
<td class="nump">$ 14,777<span></span>
</td>
<td class="nump">$ 13,787<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryWorkInProcess', window );">Work in process</a></td>
<td class="nump">574<span></span>
</td>
<td class="nump">611<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryFinishedGoods', window );">Finished goods</a></td>
<td class="nump">1,275<span></span>
</td>
<td class="nump">2,022<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryGross', window );">Subtotal</a></td>
<td class="nump">16,626<span></span>
</td>
<td class="nump">16,420<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryValuationReserves', window );">Less allowance</a></td>
<td class="nump">803<span></span>
</td>
<td class="nump">879<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventories</a></td>
<td class="nump">$ 15,823<span></span>
</td>
<td class="nump">$ 15,541<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryFinishedGoods">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before valuation and LIFO reserves of completed merchandise or goods expected to be sold within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryFinishedGoods</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryRawMaterials">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before valuation and LIFO reserves of raw materials expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(4))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryRawMaterials</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryValuationReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation reserve for inventory.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 330<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480581/330-10-S99-2<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryValuationReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryWorkInProcess">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before valuation and LIFO reserves of merchandise or goods in the production process expected to be completed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryWorkInProcess</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R39.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196663824">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Income Taxes (Details Textual) - USD ($)<br> $ in Millions</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Effective Income Tax Rate Reconciliation, Percent</a></td>
<td class="nump">23.00%<span></span>
</td>
<td class="nump">45.00%<span></span>
</td>
<td class="nump">25.00%<span></span>
</td>
<td class="nump">97.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_UndistributedEarningsOfForeignSubsidiaries', window );">Undistributed Earnings of Foreign Subsidiaries</a></td>
<td class="nump">$ 0.7<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.7<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482685/740-10-50-12<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 231<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482663/740-10-55-231<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UndistributedEarningsOfForeignSubsidiaries">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 740<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482603/740-30-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 25<br> -Paragraph 3<br> -Subparagraph (a)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482620/740-10-25-3<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -SubTopic 740<br> -Topic 942<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477617/942-740-50-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -SubTopic 740<br> -Topic 944<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478822/944-740-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UndistributedEarningsOfForeignSubsidiaries</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>R40.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597281869072">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 7 - Impairment of Long-lived Assets (Details Textual)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2016</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=ppih_PermaPipeCanadaLtdMember', window );">Perma-Pipe Canada, Ltd [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage', window );">Business Combination, Step Acquisition, Equity Interest in Acquiree, Including Subsequent Acquisition, Percentage</a></td>
<td class="nump">50.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage of voting equity interests acquired in a business combination achieved in stages, including equity interests in the acquiree held by the acquirer immediately before the acquisition date and acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=ppih_PermaPipeCanadaLtdMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=ppih_PermaPipeCanadaLtdMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>52
<FILENAME>R41.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597290738560">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Impairment of Long-lived Assets - Goodwill (Details)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th></tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">$ 2,222<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_GoodwillForeignCurrencyTranslationGainLoss', window );">Goodwill, foreign exchange change effect</a></td>
<td class="num">(66)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">$ 2,156<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after accumulated impairment loss, of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 49<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-49<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482548/350-20-55-24<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 100<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482078/820-10-55-100<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(15))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482598/350-20-45-1<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (h)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillForeignCurrencyTranslationGainLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of foreign currency translation gain (loss) which increases (decreases) asset representing future economic benefit from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 350<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482573/350-20-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillForeignCurrencyTranslationGainLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R42.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195152256">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation (Details Textual)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance', window );">Common Stock, Capital Shares Reserved for Future Issuance (in shares)</a></td>
<td class="nump">196,026<span></span>
</td>
<td class="nump">196,026<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested, Number of Shares (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Nonvested, Number of Shares (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures and Expirations in Period (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-Based Payment Arrangement, Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount | $</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod', window );">Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures and Expirations in Period (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">17,000<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount | $</a></td>
<td class="nump">$ 1,500<span></span>
</td>
<td class="nump">$ 1,500<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">2 years 1 month 6 days<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockCapitalSharesReservedForFutureIssuance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Aggregate number of common shares reserved for future issuance.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockCapitalSharesReservedForFutureIssuance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cost not yet recognized for nonvested award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For presentations that combine terminations, the number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan or that expired.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Gross number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of non-vested options outstanding.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of options vested.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R43.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597316811760">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 177<span></span>
</td>
<td class="nump">$ 227<span></span>
</td>
<td class="nump">$ 396<span></span>
</td>
<td class="nump">$ 456<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479830/718-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R44.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597196621040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation - Stock Option Activity (Details) - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod', window );">Expired or forfeited, options (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-Based Payment Arrangement, Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber', window );">Outstanding, options (in shares)</a></td>
<td class="nump">22<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1', window );">Outstanding, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 11.15<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Outstanding, weighted average remaining contractual term (Year)</a></td>
<td class="text">1 year 4 months 24 days<span></span>
</td>
<td class="text">8 months 12 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue', window );">Outstanding, aggregate intrinsic value</a></td>
<td class="nump">$ 10<span></span>
</td>
<td class="nump">$ 6<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Exercised, options (in shares)</a></td>
<td class="num">(1)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice', window );">Exercised, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 6.85<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue', window );">Exercised, aggregate intrinsic value</a></td>
<td class="nump">$ 2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod', window );">Expired or forfeited, options (in shares)</a></td>
<td class="num">(17)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice', window );">Expired or forfeited, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 12.41<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber', window );">Outstanding, options (in shares)</a></td>
<td class="nump">4<span></span>
</td>
<td class="nump">22<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1', window );">Outstanding, weighted average exercise price (in dollars per share)</a></td>
<td class="nump">$ 6.89<span></span>
</td>
<td class="nump">$ 11.15<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>For presentations that combine terminations, the number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan or that expired.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average price of options that were either forfeited or expired.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of fully vested and expected to vest options outstanding that can be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which option holders acquired shares when converting their stock options into shares.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(02)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average price as of the balance sheet date at which grantees could acquire the underlying shares with respect to all outstanding stock options which are in the customized range of exercise prices.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(02)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R45.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195859344">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Stock-based Compensation - Restricted Stock Activity (Details) - Restricted Stock [Member] - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber', window );">Outstanding (in shares)</a></td>
<td class="nump">222<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Outstanding, weighted average price (in dollars per share)</a></td>
<td class="nump">$ 9.33<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding', window );">Outstanding, aggregate intrinsic value</a></td>
<td class="nump">$ 2,083<span></span>
</td>
<td class="nump">$ 2,078<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares)</a></td>
<td class="nump">108<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted average price (in dollars per share)</a></td>
<td class="nump">$ 8.81<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod', window );">Vested and issued (in shares)</a></td>
<td class="num">(73)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue', window );">Vested and issued, weighted average price (in dollars per share)</a></td>
<td class="nump">$ 9.36<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes', window );">Forfeited or retired for taxes (in shares)</a></td>
<td class="num">(27)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue', window );">Forfeited or retired for taxes (in dollars per share)</a></td>
<td class="nump">$ 10.25<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber', window );">Outstanding (in shares)</a></td>
<td class="nump">230<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Outstanding, weighted average price (in dollars per share)</a></td>
<td class="nump">$ 9.05<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised, or put into effect as a result of the occurrence of a terminating event, or retired for taxes.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested and issued during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares related to Restricted Stock Award forfeited or retired for taxes during the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(01)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of equity instruments other than options outstanding, including both vested and non-vested instruments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(ii)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480429/718-10-50-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Intrinsic value of outstanding award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>R46.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597193086640">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details) - USD ($)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="4">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Apr. 30, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Apr. 30, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">7,954<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,029<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,930<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment', window );">Dilutive effect of equity compensation plans (in shares)</a></td>
<td class="nump">171<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">110<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">57<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Weighted average common shares outstanding assuming full dilution (in shares)</a></td>
<td class="nump">8,125<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,139<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,987<span></span>
</td>
<td class="nump">8,017<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount', window );">Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">79<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">114<span></span>
</td>
<td class="nump">18<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements', window );">Stock options and restricted stock with exercise prices or grant date prices below the average market prices (in shares)</a></td>
<td class="nump">171<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">110<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">57<span></span>
</td>
<td class="nump">170<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income (loss) attributable to common stock</a></td>
<td class="nump">$ 3,289<span></span>
</td>
<td class="nump">$ 1,443<span></span>
</td>
<td class="nump">$ 1,022<span></span>
</td>
<td class="num">$ (1,123)<span></span>
</td>
<td class="nump">$ 4,732<span></span>
</td>
<td class="num">$ (100)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 0.41<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.13<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.6<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 0.4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.13<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.59<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-52<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-15<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-7<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-10<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 52<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-52<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 15<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482635/260-10-55-15<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-7<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-2<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-7<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 718<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480454/718-10-45-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-22<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 23<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-23<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-28A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 805<br> -SubTopic 60<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147476176/805-60-65-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 740<br> -SubTopic 323<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478666/740-323-65-2<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483621/220-10-S99-2<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-1<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 815<br> -SubTopic 40<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480175/815-40-65-1<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-11<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-4<br><br>Reference 17: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-10<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479105/946-220-45-7<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-07(9))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-1<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(1)(d))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-60B<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 205<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483499/205-20-50-7<br><br>Reference 34: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 28<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-28<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 36: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br><br>Reference 37: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478524/942-220-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 16<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-16<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482662/260-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 260<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482689/260-10-45-10<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R47.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597183308400">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Debt (Details Textual)<br> $ in Thousands, &#1583;.&#1573; in Millions, &#1580;.&#1605;. in Millions, $ in Millions</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="3"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Sep. 17, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Apr. 14, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Sep. 20, 2018 </div>
<div>USD ($)</div>
</th>
<th class="th"><div>Jul. 28, 2016</div></th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>AED (&#1583;.&#1573;)</div>
</th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>EGP (&#1580;.&#1605;.)</div>
</th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Jan. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th"><div>Aug. 31, 2023</div></th>
<th class="th">
<div>Jun. 30, 2023 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Nov. 30, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Mar. 31, 2022 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>EGP (&#1580;.&#1605;.)</div>
</th>
<th class="th">
<div>Jun. 30, 2021 </div>
<div>EGP (&#1580;.&#1605;.)</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtAndCapitalLeaseObligations', window );">Debt and Lease Obligation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 27,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 25,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LinesOfCreditCurrent', window );">Line of Credit, Current</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,699<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,519<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtAndLeaseObligationNoncurrent', window );">Long-Term Debt and Lease Obligation, Noncurrent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,974<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,229<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,522<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,071<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember', window );">Land and Buildings in Lebanon, Tennessee [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseTermOfContract1', window );">Lessee, Finance Lease, Term of Contract (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">15 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount', window );">Sale Leaseback Transaction, Annual Rental Payments, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage', window );">Lessee, Finance Lease, Annual Rent Increase, Percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LesseeFinanceLeaseNumberOfOptionsToExtend', window );">Lessee, Finance Lease, Number of Options to Extend</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseRenewalTerm1', window );">Lessee, Finance Lease, Renewal Term (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseDiscountRate', window );">Lessee, Finance Lease, Discount Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent', window );">Long-Term Debt and Lease Obligation, Current</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtAndLeaseObligationNoncurrent', window );">Long-Term Debt and Lease Obligation, Noncurrent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentAxis=ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember', window );">Mortgage Note Secured by Tennessee Manufacturing Facility [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RepaymentsOfSecuredDebt', window );">Repayments of Secured Debt</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentAxis=ppih_PromissoryNoteMember', window );">Promissory Note [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentFaceAmount', window );">Debt Instrument, Face Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentAxis=ppih_CanadianMortgageNoteMember', window );">Canadian Mortgage Note [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentMaturityDate', window );">Debt Instrument, Maturity Date</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">Dec. 23,  2042<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SecuredDebt', window );">Secured Debt</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 4,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5.9<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentInterestRateEffectivePercentage', window );">Debt Instrument, Interest Rate, Effective Percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.80%<span></span>
</td>
<td class="nump">8.80%<span></span>
</td>
<td class="nump">8.80%<span></span>
</td>
<td class="nump">8.80%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DeferredFinanceCostsNet', window );">Debt Issuance Costs, Net</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis=ppih_LandAndBuildingsInLebanonTennesseeMember', window );">Land and Buildings in Lebanon, Tennessee [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration', window );">Disposal Group, Including Discontinued Operation, Consideration</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">10,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment', window );">Proceeds from Sale of Property, Plant, and Equipment, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 9,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseTermOfContract1', window );">Lessee, Finance Lease, Term of Contract (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseTermOfContract1', window );">Lessee, Finance Lease, Term of Contract (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">30 years<span></span>
</td>
<td class="text">30 years<span></span>
</td>
<td class="text">30 years<span></span>
</td>
<td class="text">30 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentTerm', window );">Debt Instrument, Term (Year)</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="nump">$ 18,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 18,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage', window );">Line of Credit Facility, Unused Capacity, Commitment Fee Percentage</a></td>
<td class="nump">0.25%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LinesOfCreditCurrent', window );">Line of Credit, Current</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">10.00%<span></span>
</td>
<td class="nump">10.00%<span></span>
</td>
<td class="nump">10.00%<span></span>
</td>
<td class="nump">10.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity', window );">Line of Credit Facility, Current Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 4,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | North American Loan Parties [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityCapitalExpendituresRestrictions', window );">Line of Credit Facility, Capital Expenditures Restrictions</a></td>
<td class="nump">$ 5,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions', window );">Line of Credit Facility, Common Stock Repurchase Restrictions</a></td>
<td class="nump">$ 3,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired', window );">Line of Credit Facility, Fixed Charge Coverage Ratio Required</a></td>
<td class="nump">1.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays', window );">Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability for Five Consecutive Days</a></td>
<td class="nump">$ 3,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability', window );">Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability</a></td>
<td class="nump">$ 2,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityDefaultAdditionalInterestRate', window );">Line of Credit Facility, Default, Additional Interest Rate</a></td>
<td class="nump">2.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Base Rate [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">1.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Base Rate [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">1.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">2.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Minimum [Member] | Additional SOFR Adjustment Based on Interest Period [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">0.10%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">2.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember', window );">Revolving Lines, North America [Member] | Secured Overnight Financing Rate (SOFR) [Member] | Maximum [Member] | Additional SOFR Adjustment Based on Interest Period [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="nump">0.25%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">24,700<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">12,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LineOfCreditFacilityGuaranteedAmount', window );">Line of Credit Facility, Guaranteed Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LettersOfCreditOutstandingAmount', window );">Letters of Credit Outstanding, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfDebt', window );">Proceeds from Issuance of Debt</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Revolving Credit Lines Used by Middle Eastern Subsidiaries, 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,200<span></span>
</td>
<td class="nump">&#1583;.&#1573; 8.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Revolving Credit Lines Used by Middle Eastern Subsidiaries, 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5,600<span></span>
</td>
<td class="nump">&#1583;.&#1573; 20.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.70%<span></span>
</td>
<td class="nump">8.70%<span></span>
</td>
<td class="nump">8.70%<span></span>
</td>
<td class="nump">8.70%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Revolving Credit Lines Used by Egypt Subsidiaries [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">20.80%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#1580;.&#1605;. 100.0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Revolving Credit Lines Used by Egypt Subsidiaries 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#1580;.&#1605;. 2.1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#1580;.&#1605;. 28.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11.00%<span></span>
</td>
<td class="nump">11.00%<span></span>
</td>
<td class="nump">11.00%<span></span>
</td>
<td class="nump">11.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity', window );">Line of Credit Facility, Maximum Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 9,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 37,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9.70%<span></span>
</td>
<td class="nump">9.70%<span></span>
</td>
<td class="nump">9.70%<span></span>
</td>
<td class="nump">9.70%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine', window );">Long-term Debt, Current Maturities, Excluding North American Revolving Line</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Renewal of Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity', window );">Line of Credit Facility, Remaining Borrowing Capacity</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="nump">8.60%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentInterestRateStatedPercentage', window );">Debt Instrument, Interest Rate, Stated Percentage</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4.50%<span></span>
</td>
<td class="nump">4.50%<span></span>
</td>
<td class="nump">4.50%<span></span>
</td>
<td class="nump">4.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">20.80%<span></span>
</td>
<td class="nump">20.80%<span></span>
</td>
<td class="nump">20.80%<span></span>
</td>
<td class="nump">20.80%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Weighted Average [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd', window );">Line of Credit Facility, Interest Rate at Period End</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11.50%<span></span>
</td>
<td class="nump">11.50%<span></span>
</td>
<td class="nump">11.50%<span></span>
</td>
<td class="nump">11.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | EIBOR [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | EIBOR [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Central Bank of Eqypt (CBE) Rate [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | Central Bank of Eqypt (CBE) Rate [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember', window );">Foreign Revolving Lines [Member] | SIBOR [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1', window );">Debt Instrument, Basis Spread on Variable Rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The percentage of annual rent increase on the finance lease of the lessee.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LesseeFinanceLeaseNumberOfOptionsToExtend">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The number of options to extend the finance lease of the lessee.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LesseeFinanceLeaseNumberOfOptionsToExtend</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityCapitalExpendituresRestrictions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Maximum amount of capital expenditures allowed under a credit agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityCapitalExpendituresRestrictions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Maximum amount of common stock repurchase allowed under credit agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The minimum amount of undrawn availability that triggers the EDITDA ratio covenant under the debt instrument.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The minimum amount of undrawn availability for five consecutive days that will trigger the EBITDA ratio covenant of the line of credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityDefaultAdditionalInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of additional interest in the event of default of the line of credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityDefaultAdditionalInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the fixed charge coverage ratio required under a line of credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:pureItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LineOfCreditFacilityGuaranteedAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of debt guaranteed under credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LineOfCreditFacilityGuaranteedAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LongtermDebtAndLeaseObligationNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of long-term debt and lease obligation, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LongtermDebtAndLeaseObligationNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after unamortized (discount) premium and debt issuance costs, of long-term debt, classified as current, excluding north american revolving lines of credit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow from leaseback transactions.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtAndCapitalLeaseObligations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of short-term and long-term debt and lease obligation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtAndCapitalLeaseObligations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentBasisSpreadOnVariableRate1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Percentage points added to the reference rate to compute the variable rate on the debt instrument.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentBasisSpreadOnVariableRate1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentFaceAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Face (par) amount of debt instrument at time of issuance.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482949/835-30-55-8<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 69B<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481568/470-20-55-69B<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 69C<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481568/470-20-55-69C<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482900/835-30-50-1<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-2<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentFaceAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentInterestRateEffectivePercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Effective interest rate for the funds borrowed under the debt agreement considering interest compounding and original issue discount or premium.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482949/835-30-55-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482900/835-30-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentInterestRateEffectivePercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentInterestRateStatedPercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Contractual interest rate for funds borrowed, under the debt agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(a)(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentInterestRateStatedPercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentMaturityDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Date when the debt instrument is scheduled to be fully repaid, in YYYY-MM-DD format.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (bbb)(2)(i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (bbb)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1B<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentMaturityDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentTerm">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Period of time between issuance and maturity of debt instrument, in PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentTerm</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredFinanceCostsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after accumulated amortization, of debt issuance costs. Includes, but is not limited to, legal, accounting, underwriting, printing, and registration costs.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-1A<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482925/835-30-45-2<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 835<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482900/835-30-50-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1D<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481139/470-20-50-1D<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredFinanceCostsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration received or receivable for the disposal of assets and liabilities, including discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeFinanceLeaseDiscountRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Discount rate used by lessee to determine present value of finance lease payments.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeFinanceLeaseDiscountRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeFinanceLeaseRenewalTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Term of lessee's finance lease renewal, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeFinanceLeaseRenewalTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeFinanceLeaseTermOfContract1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Term of lessee's finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeFinanceLeaseTermOfContract1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LettersOfCreditOutstandingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The total amount of the contingent obligation under letters of credit outstanding as of the reporting date.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LettersOfCreditOutstandingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of current borrowing capacity under the credit facility considering any current restrictions on the amount that could be borrowed (for example, borrowings may be limited by the amount of current assets), but without considering any amounts currently outstanding under the facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The effective interest rate at the end of the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of borrowing capacity currently available under the credit facility (current borrowing capacity less the amount of borrowings outstanding).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481544/470-10-50-6<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The fee, expressed as a percentage of the line of credit facility, for available but unused credit capacity under the credit facility.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LinesOfCreditCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The carrying value as of the balance sheet date of the current portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LinesOfCreditCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of long-term debt and lease obligation, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIssuanceOfDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash inflow during the period from additional borrowings in aggregate debt. Includes proceeds from short-term and long-term debt.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-14<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromIssuanceOfDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash inflow from the sale of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-12<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RepaymentsOfSecuredDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The cash outflow to repay long-term debt that is wholly or partially secured by collateral. Excludes repayments of tax exempt secured debt.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-15<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RepaymentsOfSecuredDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SecuredDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date, including the current and noncurrent portions, of collateralized debt obligations (with maturities initially due after one year or beyond the operating cycle, if longer). Such obligations include mortgage loans, chattel loans, and any other borrowings secured by assets of the borrower.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(16)(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SecuredDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_LandAndBuildingsInLebanonTennesseeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_PromissoryNoteMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_PromissoryNoteMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_CanadianMortgageNoteMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_CanadianMortgageNoteMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis=ppih_LandAndBuildingsInLebanonTennesseeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis=ppih_LandAndBuildingsInLebanonTennesseeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CreditFacilityAxis=ppih_RevolvingLinesNorthAmericaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LegalEntityAxis=ppih_NorthAmericanLoanPartiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LegalEntityAxis=ppih_NorthAmericanLoanPartiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=us-gaap_BaseRateMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=us-gaap_BaseRateMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=ppih_SecuredOvernightFinancingRateSOFRMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=ppih_SecuredOvernightFinancingRateSOFRMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementScenarioAxis=ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementScenarioAxis=ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CreditFacilityAxis=ppih_ForeignRevolvingLinesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtInstrumentAxis=ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtInstrumentAxis=ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_WeightedAverageMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_WeightedAverageMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=ppih_EIBORMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=ppih_EIBORMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=ppih_CentralBankOfEqyptCbeRateMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=ppih_CentralBankOfEqyptCbeRateMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_VariableRateAxis=ppih_SIBORMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_VariableRateAxis=ppih_SIBORMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R48.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195836176">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Leases (Details Textual)<br> $ in Thousands, &#1583;.&#1573; in Millions</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jul. 31, 2024 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jan. 31, 2024 </div>
<div>AED (&#1583;.&#1573;)</div>
</th>
<th class="th">
<div>Jan. 31, 2024 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating Lease, Liability</a></td>
<td class="nump">$ 7,654<span></span>
</td>
<td class="nump">$ 7,654<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 7,184<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="nump">6,938<span></span>
</td>
<td class="nump">6,938<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,467<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiability', window );">Finance Lease, Liability</a></td>
<td class="nump">94<span></span>
</td>
<td class="nump">94<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 113<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseRightOfUseAsset', window );">Finance Lease, Right-of-Use Asset, after Accumulated Amortization</a></td>
<td class="nump">300<span></span>
</td>
<td class="nump">300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseExpense', window );">Operating Lease, Expense</a></td>
<td class="nump">$ 600<span></span>
</td>
<td class="nump">$ 600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseTermOfContract1', window );">Lessee, Finance Lease, Term of Contract (Year)</a></td>
<td class="text">1 year<span></span>
</td>
<td class="text">1 year<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeFinanceLeaseTermOfContract1', window );">Lessee, Finance Lease, Term of Contract (Year)</a></td>
<td class="text">30 years<span></span>
</td>
<td class="text">30 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LeaseContractualTermAxis=ppih_AbuDhabiLandLeaseMember', window );">Abu Dhabi Land Lease [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_LesseeOperatingLeaseAnnualPayment', window );">Lessee, Operating Lease, Annual Payment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 300<span></span>
</td>
<td class="nump">&#1583;.&#1573; 1.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_DecreaseInOperatingLeaseLiabilityCurrent', window );">Decrease in Operating Lease Liability, Current</a></td>
<td class="nump">$ 400<span></span>
</td>
<td class="nump">400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_DecreaseInOperatingLeaseLiabilityNoncurrent', window );">Decrease in Operating Lease Liability, Noncurrent</a></td>
<td class="nump">6,000<span></span>
</td>
<td class="nump">6,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_DecreaseInOperatingLeaseRightofuseAsset', window );">Decrease in Operating Lease Right-of-use Asset</a></td>
<td class="nump">$ 5,500<span></span>
</td>
<td class="nump">$ 5,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_DecreaseInOperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of decrease in the current portion of operating lease liability during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_DecreaseInOperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_DecreaseInOperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in the non-current portion of the operating lease liability as of the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_DecreaseInOperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_DecreaseInOperatingLeaseRightofuseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The amount of decrease in the operating lease right-of-use asset as of the reporting period.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_DecreaseInOperatingLeaseRightofuseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_LesseeOperatingLeaseAnnualPayment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Represents the amount of payment expected to be made per year under operating lease of lessee.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_LesseeOperatingLeaseAnnualPayment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount, after accumulated amortization, of right-of-use asset from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeFinanceLeaseTermOfContract1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Term of lessee's finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-3<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeFinanceLeaseTermOfContract1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of operating lease expense. Excludes sublease income.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseContractualTermAxis=ppih_AbuDhabiLandLeaseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseContractualTermAxis=ppih_AbuDhabiLandLeaseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R49.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597199287408">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and Equipment - net</a></td>
<td class="nump">$ 37,518<span></span>
</td>
<td class="nump">$ 37,620<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityCurrent', window );">Finance lease liability short-term</a></td>
<td class="nump">32<span></span>
</td>
<td class="nump">113<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityNoncurrent', window );">Finance lease liability long-term</a></td>
<td class="nump">62<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiability', window );">Total finance lease liabilities</a></td>
<td class="nump">94<span></span>
</td>
<td class="nump">113<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating Lease, Right-of-Use Asset</a></td>
<td class="nump">6,938<span></span>
</td>
<td class="nump">6,467<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Operating lease liability short-term</a></td>
<td class="nump">965<span></span>
</td>
<td class="nump">914<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Operating lease liability long-term</a></td>
<td class="nump">6,689<span></span>
</td>
<td class="nump">6,270<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Total operating lease liabilities</a></td>
<td class="nump">7,654<span></span>
</td>
<td class="nump">7,184<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_FinanceLeasesAssetsMember', window );">Finance Leases Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property and Equipment - gross</a></td>
<td class="nump">942<span></span>
</td>
<td class="nump">970<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Accumulated depreciation and amortization</a></td>
<td class="num">(595)<span></span>
</td>
<td class="num">(536)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and Equipment - net</a></td>
<td class="nump">$ 347<span></span>
</td>
<td class="nump">$ 434<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482099/360-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 360<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482099/360-10-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -SubTopic 10<br> -Topic 360<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482099/360-10-50-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-7A<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 942<br> -SubTopic 360<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478451/942-360-50-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_FinanceLeasesAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=ppih_FinanceLeasesAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>61
<FILENAME>R50.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597193638176">
<tr>
<th class="tl" colspan="2" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Leases - Lease Costs (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseRightOfUseAssetAmortization', window );">Amortization of ROU assets</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 37<span></span>
</td>
<td class="nump">$ 33<span></span>
</td>
<td class="nump">$ 75<span></span>
</td>
<td class="nump">$ 87<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseInterestExpense', window );">Interest on lease liabilities</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">2<span></span>
</td>
<td class="nump">3<span></span>
</td>
<td class="nump">3<span></span>
</td>
<td class="nump">5<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseCost', window );">Operating lease costs</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">438<span></span>
</td>
<td class="nump">426<span></span>
</td>
<td class="nump">893<span></span>
</td>
<td class="nump">882<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_ShortTermLeaseCost', window );">Short-term lease costs (1)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">93<span></span>
</td>
<td class="nump">59<span></span>
</td>
<td class="nump">236<span></span>
</td>
<td class="nump">245<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_SubleaseIncome', window );">Sub-lease income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">0<span></span>
</td>
<td class="num">(20)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(40)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LeaseCost', window );">Total Lease costs</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 570<span></span>
</td>
<td class="nump">$ 501<span></span>
</td>
<td class="nump">$ 1,207<span></span>
</td>
<td class="nump">$ 1,179<span></span>
</td>
</tr>
<tr><td colspan="5"></td></tr>
<tr><td colspan="5"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">Includes variable lease costs, which are not material.</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseInterestExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of interest expense on finance lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseInterestExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseRightOfUseAssetAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization expense attributable to right-of-use asset from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-4<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseRightOfUseAssetAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lease cost recognized by lessee for lease contract.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShortTermLeaseCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of short-term lease cost, excluding expense for lease with term of one month or less.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShortTermLeaseCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubleaseIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of sublease income excluding finance and operating lease expense.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubleaseIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R51.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597290800864">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeasePrincipalPayments', window );">Financing cash outflows from finance leases</a></td>
<td class="nump">$ 16<span></span>
</td>
<td class="nump">$ 154<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseInterestPaymentOnLiability', window );">Operating cash outflows from finance leases</a></td>
<td class="nump">3<span></span>
</td>
<td class="nump">5<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeasePayments', window );">Operating cash outflows from operating leases</a></td>
<td class="nump">1,045<span></span>
</td>
<td class="nump">890<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability', window );">Operating leases liabilities</a></td>
<td class="nump">$ 1,041<span></span>
</td>
<td class="nump">$ 3,484<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseInterestPaymentOnLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of interest paid on finance lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseInterestPaymentOnLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeasePrincipalPayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for principal payment on finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-5<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeasePrincipalPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeasePayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-5<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeasePayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in right-of-use asset obtained in exchange for operating lease liability.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>63
<FILENAME>R52.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195662032">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)<br></strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1', window );">Finance leases (Year)</a></td>
<td class="text">2 years 9 months 18 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Operating leases (Year)</a></td>
<td class="text">12 years 8 months 12 days<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent', window );">Finance leases</a></td>
<td class="nump">6.40%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Operating leases</a></td>
<td class="nump">10.40%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average discount rate for finance lease calculated at point in time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining lease term for finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average discount rate for operating lease calculated at point in time.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 53<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479589/842-20-55-53<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<FILENAME>R53.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597195174320">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 11 - Leases - Maturities of Lease Liabilities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear', window );">For the six months ending January 31, 2025</a></td>
<td class="nump">$ 1,012<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear', window );">For the six months ending January 31, 2025, finance leases</a></td>
<td class="nump">16<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">For the year ended January 31, 2026, operating leases</a></td>
<td class="nump">1,993<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths', window );">For the year ended January 31, 2026, finance leases</a></td>
<td class="nump">33<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">For the year ended January 31, 2027, operating leases</a></td>
<td class="nump">1,980<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo', window );">For the year ended January 31, 2027, finance leases</a></td>
<td class="nump">36<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">For the year ended January 31, 2028, operating leases</a></td>
<td class="nump">1,963<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree', window );">For the year ended January 31, 2028, finance leases</a></td>
<td class="nump">9<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">For the year ended January 31, 2029, operating leases</a></td>
<td class="nump">1,617<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour', window );">For the year ended January 31, 2029, finance leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive', window );">For the year ended January 31, 2030, operating leases</a></td>
<td class="nump">612<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive', window );">For the year ended January 31, 2030, finance leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive', window );">Thereafter, operating leases</a></td>
<td class="nump">6,982<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive', window );">Thereafter, finance leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total lease payments, operating leases</a></td>
<td class="nump">16,159<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityPaymentsDue', window );">Total lease payments, finance leases</a></td>
<td class="nump">94<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Less: amount representing interest, operating leases</a></td>
<td class="num">(8,505)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount', window );">Less: amount representing interest, finance leases</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Total lease liabilities, operating leases</a></td>
<td class="nump">7,654<span></span>
</td>
<td class="nump">$ 7,184<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiability', window );">Total lease liabilities, finance leases</a></td>
<td class="nump">$ 94<span></span>
</td>
<td class="nump">$ 113<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments for finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in remainder of current fiscal year.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for finance lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease having initial or remaining lease term in excess of one year to be paid in remainder of current fiscal year.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478964/842-20-50-6<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 842<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479041/842-20-45-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<FILENAME>R54.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597360683568">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 9,455<span></span>
</td>
<td class="nump">$ 5,845<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RestrictedCashAndCashEquivalents', window );">Restricted cash</a></td>
<td class="nump">1,426<span></span>
</td>
<td class="nump">1,395<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Cash, cash equivalents and restricted cash shown in the statement of cash flows</a></td>
<td class="nump">$ 10,881<span></span>
</td>
<td class="nump">$ 7,240<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483467/210-10-45-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-8<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 24<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-24<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestrictedCashAndCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents restricted as to withdrawal or usage. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 230<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482913/230-10-50-8<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(1)(a))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482740/230-10-45-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestrictedCashAndCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>66
<FILENAME>R55.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597199453296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 15 - Treasury Stock (Details Textual) - USD ($)<br> shares in Thousands, $ in Millions</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
<th class="th"><div>Dec. 07, 2022</div></th>
<th class="th"><div>Oct. 04, 2021</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_StockRepurchaseProgramAuthorizedAmount1', window );">Share Repurchase Program, Authorized, Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1<span></span>
</td>
<td class="nump">$ 3<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed', window );">Stock Repurchase Program, Authorized Repurchase Amount Used</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Stock Repurchased During Period, Shares (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount used of the stock repurchase plan authorized.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>ppih_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StockRepurchaseProgramAuthorizedAmount1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount authorized for purchase of share under share repurchase plan. Includes, but is not limited to, repurchase of stock and unit of ownership.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 505<br> -SubTopic 30<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 4<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481520/505-30-50-4<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StockRepurchaseProgramAuthorizedAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>srt_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedDuringPeriodShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Number of shares that have been repurchased during the period and have not been retired and are not held in treasury. Some state laws may govern the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -SubTopic 10<br> -Topic 505<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481112/505-10-50-2<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 505<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478448/946-505-50-2<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-09(4)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479134/946-220-S99-3<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3<br> -Subparagraph (SX 210.6-03(i)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479886/946-10-S99-3<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 505<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>67
<FILENAME>R56.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="include/report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.24.2.u1</span><table class="report" border="0" cellspacing="2" id="idm140597182546624">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 16 - Noncontrolling Interest (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jul. 31, 2024</div></th>
<th class="th"><div>Jul. 31, 2023</div></th>
<th class="th"><div>Jan. 31, 2024</div></th>
<th class="th"><div>Jun. 01, 2023</div></th>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Assets</a></td>
<td class="nump">$ 159,187<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 159,187<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 155,711<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLossAttributableToNoncontrollingInterest', window );">Net Income (Loss) Attributable to Noncontrolling Interest</a></td>
<td class="nump">995<span></span>
</td>
<td class="nump">$ 148<span></span>
</td>
<td class="nump">1,341<span></span>
</td>
<td class="nump">$ 148<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount', window );">Redeemable Noncontrolling Interest, Equity, Carrying Amount</a></td>
<td class="nump">8,057<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,057<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,266<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_ConsolidatedEntitiesAxis=ppih_GulfInsulationGroupMember', window );">Gulf Insulation Group [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NetIncomeLossAttributableToNoncontrollingInterest', window );">Net Income (Loss) Attributable to Noncontrolling Interest</a></td>
<td class="nump">1,000<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="nump">1,300<span></span>
</td>
<td class="nump">$ 100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount', window );">Redeemable Noncontrolling Interest, Equity, Carrying Amount</a></td>
<td class="nump">8,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,100<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination', window );">Noncontrolling Interest, Increase from Business Combination</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember', window );">Related Party [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NotesReceivableNet', window );">Financing Receivable, after Allowance for Credit Loss</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 4,200<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Assets', window );">Assets</a></td>
<td class="nump">26,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Liabilities</a></td>
<td class="nump">$ 15,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 15,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_dei_LegalEntityAxis=ppih_GulfInsulationGroupMember', window );">Gulf Insulation Group [Member] | Related Party [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_NotesPayable', window );">Notes Payable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,800<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_OwnershipAxis=ppih_JointVentureMember', window );">Joint Venture [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MinorityInterestOwnershipPercentageByParent', window );">Subsidiary, Ownership Percentage, Parent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">60.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_srt_OwnershipAxis=ppih_JointVentureMember', window );">Joint Venture [Member] | Gulf Insulation Group [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_MinorityInterestOwnershipPercentageByParent', window );">Subsidiary, Ownership Percentage, Parent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">40.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentFairValueDisclosure', window );">Property, Plant, and Equipment, Fair Value Disclosure</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,800<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of asset recognized for present right to economic benefit.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 48<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-48<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 49<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482785/280-10-55-49<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 270<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (i)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482964/270-10-50-1<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (ee)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-32<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 22<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-22<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 12: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 10<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481372/852-10-55-10<br><br>Reference 13: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-12<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(8))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(18))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 19: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 28: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br><br>Reference 30: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized for present obligation requiring transfer or otherwise providing economic benefit to others.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(24))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(19))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(25))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(23))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 210<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(21))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481231/810-10-45-25<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-3<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 235<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480678/235-10-S99-1<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 323<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481687/323-10-50-3<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 825<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482907/825-10-50-28<br><br>Reference 15: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 946<br> -SubTopic 830<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 12<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479168/946-830-55-12<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(14))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 18: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1A<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 470<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480097/470-10-S99-1B<br><br>Reference 27: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 28: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 852<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481404/852-10-50-7<br><br>Reference 29: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 280<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (d)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482810/280-10-50-30<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MinorityInterestOwnershipPercentageByParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>The parent entity's interest in net assets of the subsidiary, expressed as a percentage.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MinorityInterestOwnershipPercentageByParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLossAttributableToNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of Net Income (Loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-6<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 9<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-9<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 250<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 8<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147483443/250-10-50-8<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 944<br> -SubTopic 220<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147477250/944-220-S99-1<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 6<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482765/220-10-50-6<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 810<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (a)(2)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 55<br> -Paragraph 4J<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481175/810-10-55-4J<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1A<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 220<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482790/220-10-45-1B<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLossAttributableToNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in noncontrolling interest from a business combination.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)(1)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479907/805-20-50-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480008/505-10-S99-1<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(2)<br> -SubTopic 10<br> -Topic 810<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481203/810-10-50-1A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NotesPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Including the current and noncurrent portions, aggregate carrying amount of all types of notes payable, as of the balance sheet date, with initial maturities beyond one year or beyond the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(22))<br> -SubTopic 10<br> -Topic 210<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480566/210-10-S99-1<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 942<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(16))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478546/942-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(16)(a)(2))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(17))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NotesPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NotesReceivableNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Amortized cost, after allowance for credit loss, of financing receivable. Excludes financing receivable covered under loss sharing agreement and net investment in lease.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 310<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 45<br> -Paragraph 2<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147481990/310-10-45-2<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 946<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.6-04(5)(b))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479170/946-210-S99-1<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 326<br> -SubTopic 20<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147479319/326-20-50-5<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 944<br> -SubTopic 210<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(3))<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147478777/944-210-S99-1<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NotesReceivableNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2E<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2E<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482106/820-10-50-2<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Topic 820<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 55<br> -Paragraph 100<br> -Subparagraph (c)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147482078/820-10-55-100<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Definition</a><div><p>As of the reporting date, the aggregate carrying amount of all noncontrolling interests which are redeemable by the (parent) entity (1) at a fixed or determinable price on a fixed or determinable date, (2) at the option of the holder of the noncontrolling interest, or (3) upon occurrence of an event that is not solely within the control of the (parent) entity. This item includes noncontrolling interest holder's ownership (or holders' ownership) regardless of the type of equity interest (common, preferred, other) including all potential organizational (legal) forms of the investee entity.</p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 480<br> -SubTopic 10<br> -Subparagraph (12)(c)<br> -Section S99<br> -Paragraph 3A<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Name Accounting Standards Codification<br> -Topic 480<br> -SubTopic 10<br> -Subparagraph (16)(c)<br> -Paragraph 3A<br> -Section S99<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 480<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3A<br> -Subparagraph (15)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Topic 480<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section S99<br> -Paragraph 3A<br> -Subparagraph (14)<br> -Publisher FASB<br> -URI https://asc.fasb.org/1943274/2147480244/480-10-S99-3A<br></p></div>
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidatedEntitiesAxis=ppih_GulfInsulationGroupMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidatedEntitiesAxis=ppih_GulfInsulationGroupMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RelatedPartyTransactionsByRelatedPartyAxis=us-gaap_RelatedPartyMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LegalEntityAxis=ppih_GulfInsulationGroupMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LegalEntityAxis=ppih_GulfInsulationGroupMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_OwnershipAxis=ppih_JointVentureMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_OwnershipAxis=ppih_JointVentureMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>68
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
M4$L#!!0    ( '5**UD'04UB@0   +$    0    9&]C4')O<',O87!P+GAM
M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG
M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGD<Z,STA)8*O4'J@)I9GF
M3?X.CD:?<@X>K7A.YNJQ<&4GPZ4A!0W_<FW>J=0U[R;UEA_6\#MI7E!+ P04
M    " !U2BM9L2%GPN\    K @  $0   &1O8U!R;W!S+V-O<F4N>&ULS9)1
M2\,P$,>_BN2]O:85<:'+BV-/"H(#Q;>0W+9@TX3DI-VW-ZU;A^@'\#%W__SN
M=W"M#D+[B,_1!XQD,=V,KNN3T&'-CD1! "1]1*=2F1-];NY]=(KR,QX@*/VA
M#@AU5=V!0U)&D8()6(2%R&1KM- 1%?EXQAN]X,-G[&:8T8 =.NPI 2\Y,#E-
M#*>Q:^$*F&"$T:7O IJ%.%?_Q,X=8.?DF.R2&H:A')HYEW?@\/;T^#*O6]@^
MD>HUYE_)"CH%7+/+Y-?F8;/;,EE7]6U1K0K.=[P1?"7J^_?)]8??5=AY8_?V
M'QM?!&4+O^Y"?@%02P,$%     @ =4HK69E<G",0!@  G"<  !,   !X;"]T
M:&5M92]T:&5M93$N>&UL[5I;<]HX%'[OK]!X9_9M"\8V@;:T$W-I=MNTF83M
M3A^%$5B-;'EDD81_OT<V$,N6#>V23;J;/ 0LZ?O.14?GZ#AY\^XN8NB&B)3R
M>&#9+]O6N[<OWN!7,B0103 9IZ_PP JE3%ZU6FD PSA]R1,2P]R"BPA+>!3+
MUES@6QHO(];JM-O=5H1I;*$81V1@?5XL:$#05%%:;U\@M.4?,_@5RU2-9:,!
M$U=!)KF(M/+Y;,7\VMX^9<_I.ATR@6XP&U@@?\YOI^1.6HCA5,+$P&IG/U9K
MQ]'22(""R7V4!;I)]J/3%0@R#3LZG5C.=GSVQ.V?C,K:=#1M&N#C\7@XMLO2
MBW <!.!1NY["G?1LOZ1!";2C:=!DV/;:KI&FJHU33]/W?=_KFVB<"HU;3]-K
M=]W3CHG&K=!X#;[Q3X?#KHG&J]!TZVDF)_VN:Z3I%FA"1N/K>A(5M>5 TR
M6'!VULS2 Y9>*?IUE!K9';O=05SP6.XYB1'^QL4$UFG2&98T1G*=D 4. #?$
MT4Q0?*]!MHK@PI+27)#6SRFU4!H(FLB!]4>"(<7<K_WUE[O)I#-ZG7TZSFN4
M?VFK :?MNYO/D_QSZ.2?IY/734+.<+PL"?'[(UMAAR=N.Q-R.AQG0GS/]O:1
MI24RS^_Y"NM./&<?5I:P7<_/Y)Z,<B.[W?98??9/1VXCUZG LR+7E$8D19_(
M+;KD$3BU20TR$S\(G8:8:E < J0),9:AAOBTQJP1X!-]M[X(R-^-B/>K;YH]
M5Z%82=J$^!!&&N*<<^9ST6S[!Z5&T?95O-RCEU@5 9<8WS2J-2S%UGB5P/&M
MG#P=$Q+-E L&08:7)"82J3E^34@3_BNEVOZ<TT#PE"\D^DJ1CVFS(Z=T)LWH
M,QK!1J\;=8=HTCQZ_@7YG#4*')$;'0)G&[-&(81IN_ >KR2.FJW"$2M"/F(9
M-AIRM1:!MG&IA&!:$L;1>$[2M!'\6:PUDSY@R.S-D77.UI$.$9)>-T(^8LZ+
MD!&_'H8X2IKMHG%8!/V>7L-)P>B"RV;]N'Z&U3-L+([W1]072N0/)J<_Z3(T
M!Z.:60F]A%9JGZJ'-#ZH'C(*!?&Y'C[E>G@*-Y;&O%"N@GL!_]':-\*K^(+
M.7\N?<^E[[GT/:'2MS<C?6?!TXM;WD9N6\3[KC':US0N*&-7<LW(QU2ODRG8
M.9_ [/UH/I[Q[?K9)(2OFEDM(Q:02X&S022X_(O*\"K$">AD6R4)RU3393>*
M$IY"&V[I4_5*E=?EK[DHN#Q;Y.FOH70^+,_Y/%_GM,T+,T.W<DOJMI2^M28X
M2O2QS'!.'LL,.V<\DAVV=Z =-?OV77;D(Z4P4Y=#N!I"O@-MNIW<.CB>F)&Y
M"M-2D&_#^>G%>!KB.=D$N7V85VWGV-'1^^?!4;"C[SR6'<>(\J(A[J&&F,_#
M0X=Y>U^89Y7&4#04;6RL)"Q&MV"XU_$L%.!D8"V@!X.O40+R4E5@,5O& RN0
MHGQ,C$7H<.>77%_CT9+CVZ9EM6ZO*7<9;2)2.<)IF!-GJ\K>9;'!51W/55OR
ML+YJ/;053L_^6:W(GPP13A8+$DACE!>F2J+S&5.^YRM)Q%4XOT4SMA*7&+SC
MYL=Q3E.X$G:V#P(RN;LYJ7IE,6>F\M\M# DL6XA9$N)-7>W5YYN<KGHB=OJ7
M=\%@\OUPR4</Y3OG7_1=0ZY^]MWC^FZ3.TA,G'G%$0%T10(CE1P&%A<RY%#N
MDI &$P'-E,E$\ *"9*8<@)CZ"[WR#+DI%<ZM/CE_12R#ADY>TB42%(JP# 4A
M%W+C[^^3:G>,U_HL@6V$5#)DU1?*0XG!/3-R0]A4)?.NVB8+A=OB5,V[&KXF
M8$O#>FZ=+2?_VU[4/;07/4;SHYG@'K.'<YMZN,)%K/]8UA[Y,M\Y<-LZW@->
MYA,L0Z1^P7V*BH 1JV*^NJ]/^26<.[1[\8$@F_S6VZ3VW> ,?-2K6J5D*Q$_
M2P=\'Y(&8XQ;]#1?CQ1BK::QK<;:,0QY@%CS#*%F.-^'19H:,]6+K#F-"F]!
MU4#E/]O4#6CV#30<D05>,9FV-J/D3@H\W/[O#;#"Q([A[8N_ 5!+ P04
M" !U2BM9[,:X1.4%   ''P  &    'AL+W=O<FMS:&5E=',O<VAE970Q+GAM
M;+69:W/B-A2&_XJ&=CKM3 B63"!L"3.$)-VTNUEV2>_3#XHMP!/;<F4Y)/^^
M1[:Q248^L)Z2#\&W\UJO="P]DL8;J1[3M1":/$=AG%YTUEHG[WJ]U%N+B*>G
M,A$QW%E*%7$-IVK52Q,EN)\'16&/.<Z@%_$@[DS&^;6YFHQEIL,@%G-%TBR*
MN'JY%*'<7'1H9WOA2[!::W.A-QDG?"460O^:S!6<]2H5/XA$G 8R)DHL+SI3
M^F[F,A.0/_%;(#;ISC$Q5AZD?#0GM_Y%QS$E$J'PM)'@\/,D9B(,C1*4X]]2
MM%.]TP3N'F_5;W+S8.:!IV(FP]\#7Z\O.N<=XHLEST+]16[>B]+0F='S9)CF
M_\FF>+;?[Q O2[6,RF H013$Q2]_+BMB-\!I"&!E 'L30)O>X)8!;FZT*%EN
MZXIK/ADKN2'*/ UJYB"OFSP:W 2Q:<:%5G W@#@]N9)>!JVBR33VR76L _U"
M;N,B/4PU=TFZYDJDXYZ&MYF8GE<J7Q;*K$%Y0#[*6*]34/6%_SJ^!Z6LBLJV
M1;UDJ.#/67A*7'I"F,/ZEO+,\/"%2$X)M8:_*HY;U9R;Z[G[:FZWNO[^ $^1
M6RVB]!];E162?;ND^63?I0GWQ$4'OLE4J"?1F7SW#1TX/]K\_D]BK]SW*_=]
M3'U2ILH,*D#Q$.K %\_D%_%B,XTK.? WHGW*F,TC&MO2XUGE\>P0CU_$*DC!
M)33U'8^$S2&N,Q>0'MUYD$!FQ%JH.,\5J+7W,O2#>)6>P'7OU&8?%6YI?U#9
M'Z#%GD)V^WF&WX1\9;.-QR]YF-IJ:X:&M30UK$P-T4+-,J5R2T'J00O\*;@R
M'12!SM/:LKA:M^O0KDMM)M' EB;/*Y/G:+&JKJET"0D82)_<P&5K1XZK?;9^
MF&A,2W^CRM_HJ_SEK=CH#M=J&DS0J);^J%./RLYA#N]?$FM>[HFG3O>SS14>
MUM;6#FS0PVQ]SKB"GC TO6LBE;9:Q+6TRJR]"Q[6UB*K+;+#+)8?'=:Y[)&J
M@*>1>'"!MEYK J(H8NQD*8R.:9 3$-*>N%CC<(''M359@PX]B'1N@E"0NRQZ
M$,IJ;A_DP#C!SES':O 8D$-KRJ$'80X@B%30=CF<G)"%AJ0E4I&9S(#Q /6D
M;T]B7/WJVFKY&&!#:[*A.)J4EN_Y,[GU(8&#9> 5 (^T,"[I#KKNB+'18&3U
M>PSFH37T4)Q32K]3WP=UP,WR@.2SE4^QO5UQ2=8?.0Z9!_HQ@(]><A]2)@L@
M95S'7@/' "):$Q'%(>9M#<S,&63WO=S$5O>XW")1 .Y6G\< (UJ3$<5QYJW/
MZC.>*_D4Q)Z]J7'-^S^L1H]!2*PF)(83SENC<YEJ0,&_@J2QI]JC.!RZYP/K
MNL(QH(G5T,1PT,E3=:H$;S:&"YSWAU9;QP E5H,2P^GF@\RG)FL98^/J'I'1
M8-"ECF,=5O'0MOYJ.&(XS]P'&HA!+@EEWS_\0!;"RQ2TI-4DKC23401#TT)+
M[_&$?'OJ4)+ A.>)AYD@B5#%$IVU"HZ!3JQ&)X93#V"A6=\@BY?H0896Y[C
M?'[[WNKK&,3$:F)B.--LVY)</WMK'J]$X\+0'J&[Z>)J:IVHX8%M'=: Q X"
MI.UJ20'U>5/">&*?9N]1_-.ZACS#H]KZK,&('01&^;)<L:-@)FM\:]SJ$U=L
M\GD,_&$U_K"#\,=,8H#H 0E64MF[(ESG3L9=[GD"9$#$+P2M?H^!0:S&('80
M!BTB'H;D,DOA=FK/6ERG:9$!#VMISZWAQST(?JXCH5;FJ_P)%/0:^"!*>&QM
MUSV"C9-O/*ZMT9I]7!Q=MNVX%M".F#U<IMG>,1C(K1G(Q?%EV\V^&N 7^88;
M^91I(-K8M\\S+G'EK]Y**M3.<C6S]?LT&8Z&P_,S=]Q[VK78V]EJ--F7[\"F
MQ#.+!,6N8W6UVN6=YGN;O?KQ8HOX(S?)FY)0+"'4.1W"VU6QZUJ<:)GD&Y</
M4FL9Y8=KP7VAS -P?RFEWIZ8%U1[WY/_ %!+ P04    " !U2BM9U%%,O_@%
M  !9&P  &    'AL+W=O<FMS:&5E=',O<VAE970R+GAM;*U9;6_;-A#^*X17
M# G0Q"+UGB4&%DO;.JQKT;3K9\:B8Z&2Z(ETDOW[42^6;/+$I)N_V);\W)'/
MW?'X2+Q^XO4WL6%,HN>RJ,3-;"/E]FH^%ZL-*ZFXY%M6J7_6O"ZI5)?UPUQL
M:T:SUJ@LYL1Q@GE)\VJVN&[O?:P7UWPGB[QB'VLD=F5)ZW]N6<&?;F9XMK_Q
M*7_8R.;&?'&]I0_LCLDOVX^UNIH/7K*\9)7(>85JMKZ9_8RO4N(V!BWBKYP]
MB8/?J*%RS_FWYN)==C-SFAFQ@JUDXX*JKT>V9$71>%+S^+MW.AO&; P/?^^]
M_]*25V3NJ6!+7GS-,[FYF44SE+$UW17R$W_ZC?6$_,;?BA>B_41//=:9H=5.
M2%[VQFH&95YUW_2Y#\2!@?(#&Y#>@.@&WH2!VQNXKQW!ZPV\UX[@]P8M]7G'
MO0U<0B5=7-?\"=4-6GEK?K31;ZU5O/*J*90[6:M_<V4G%TM>"5[D&94L0W=2
M?:DJD +Q-?JP935MLBG0V9>*[K)<8<[1!?IREZ"S-^=(;&C-!,HK]'G#=X)6
MF7B+WAQ=7\^EFF0SU'S53^BVFQ"9F)"+WO-*;@1*JXQE@'UBMP\L]G,5G"%"
M9!^A6V)U^/NNN$0N?HN(0SQ@/LO7F[L0G?\W>OJ?1S\*ACN4B]OZ\R;\_:E:
MEZ % Q/;F0:M:=.@'A=NZ&,U[.-AN "4CSU\C$I,5(@CUSM&I28J\,(X&E!'
M'+V!HV?EN.1"-O4_R;,S]P]&)9[CQAI/ .4'8:CQ-%%>&'E:S%( %?E^#//T
M!YZ^E>>O-1<";6N^SB5$TS<&Q:X7:BE8FJC8"S108H*(&\=:SE-@P("X$RR#
M@670FKD3+/LN5CT@]JQV5P&G-+!%JMFLK\26KMC-3.W&@M6/;+;X\0<<.#]!
M#>&4SI)3.DM/Y.PH$>&0B-!>;JQ2F2B0VA80S=16E@O99.:163,3&D7AQZ&^
MU@ 0B;1%E)@@3#")M"($4$[H$;@(HX%[9.5^IX302R48 <O-UYLG /)B1R-J
M@H@?Z3P!4.@Z,,UXH!E;:7[F4B68OVK%Q<;XH>L2C:X)4AU4SZL)PEZ( XTO
M@%+=;"*OV!GEDV.E_*Y:\9*A=<W+/7$EF$#9XYADL*<S!E DT#ME J!B$OH:
M9<A7&(03E \4(WZ!LF2J/<A]>D&RV%R16-\Z %#@!CI5$X0=HF\=$ I[$T(
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
MO)P+#NE/&\#WCU*JMS?Z$</-(Z67?P%02P,$%     @ =4HK6=;(%F^W @
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
MY>V'N%&$2V*LK_ZD=R"%ZT'*2^[I]9:C0X'C%4#"N2\' _4)<4F$2V)D-/U
M='"%Z^'*[;;8Y[6X&O7W9^=%/ET6>5T6FTWSAY,LKU,QJ>"]O;Z'T7'!60L@
MF=I<AHZX48A+(EP28\/I1Z:C+?RGT1:]\^B(X+0%EP2X),0E$2"9,ILY<D@P
M63\F'7'A>N(R0./AQ9L4GK1N^L5;Q17.W/>42*@R9CD6DZ,!P ]@\094[MR5
M@3P@<YWS._S^8P,=2K$N0BG:?01@="R5)4CS= =(X$I</\:QE3BI6TCJ%I&Z
MQ51N_=SIL(]U^9X@-%U(H8\%[ E2GD(!]@0!E3@@@RIQ0 :<S) *J,2AH0U7
MXE9'3"P],4&> B(E)*1N"U*W@-0M)'6+2-UB2T4YMF<-)=+9TV1ZE/,#I9/>
M>7264;HM2-T"4K>0U"TB=8LMZ"DZUQPJ/CJ48UV.<LX@(;R D*(<"T Y2E6B
M\A)1#9KR_2L@8Z[/Y=H<D$$+"*#RF./+"PB <GS''Z *5H=RK(LVR[R@&D1!
MR!T@&:@&*8E10.H6DKI%I&XQE5L_=SHB92%$ZF=L*-7W.?JL5PF09YF^)R<@
M9:<!J5M(ZA:1NL54;OT$[$B<]<+G(-&EA92_6=#SDO[<EZ_U"])N U*WD-0M
M(G6+J=SZ:=9A1>OBQR91A*6W&IU9%SPX:0$/*0(("Y!!" N0044+]/BDBK
MF0YA=4S1^I$G*/6-1X< WX*%2P) 8G%_+D\^O@4+E\187_T78'3<T-9SPQ>]
M H-T*Y:- L@%(&&>M-H'N$^(2R)<$B.CZ0>B@W"V'L(1_/U)W\/HN*AP2XD+
M@,G4MY.@/B$NB7!)C(RF'Y>.Q=EZ%O<#"$7O/#H>Z(:@!2X)<$F(2R) ,F5S
M+@<$4?4CTD$M6P^U?OIN7WW_H^.F0A?Y3AF03#E30H>^)2G$)1$NB<'AF$-G
MTMG+EN@HD=YJ= @NH$2 !J)$@ RB1( ,*+@@%4") )F&$MD=);)?2(G0Z)#N
M!;(AH 3=:)%V&Y"ZA:1N$:E;3.5V3+/9V5LSF_>T_I:43UE>&9OT4=B;;SW1
M6WE\]>GQ2UWL#B_2?"CJNM@>/J[31%RO&X'X_\>BJ+]_:=[->7H![<V?4$L#
M!!0    ( '5**UG-/[^0[P@  !,K   8    >&PO=V]R:W-H965T<R]S:&5E
M=#<N>&ULM5IM<]NX$?XK&/6F36;BB"1(2DIMSR3*Y9I.TF3B2_NATP\0"5EH
M*$('0++=7]\%2 L2\6+YJL[$D4@MEL\"N_OL KR\X^*'7%&JT/VZ:>75:*74
MYLUX+*L571/YFF]H"[\LN5@3!9?B=BPW@I+:#%HWXRQ)RO&:L'9T?6GN?177
MEWRK&M;2KP+)[7I-Q,,[VO"[JU$Z>KSQC=VNE+XQOK[<D%MZ0]7WS5<!5^.]
MEIJM:2L9;Y&@RZO1V_3-O,CT "/Q=T;OY,%WI$U9</Y#7WRLKT:)1D0;6BFM
M@L#'CLYITVA-@..W7NEH_TP]\/#[H_8/QG@P9D$DG?/F'ZQ6JZO1=(1JNB3;
M1GWC=W^AO4&%UE?Q1IK_T5TOFXQ0M96*K_O!@&#-VNZ3W/<3<3  ]/@'9/V
M;#@@#PS _0!L#.V0&;/>$T6N+P6_0T)+@S;]Q<R-&0W6L%8OXXT2\"N#<>IZ
MSEO)&U8316MTH^ #UDA)Q)=H3N0*?8!UENC%]Y9L:P8R+]$%^G[S'KWXZ27Z
M";$6_;KB6TG:6EZ.%>#16L=5_^QWW;.SP+-+])FW:B71SVU-Z^/Q8[!C;TSV
M:,R[+*KPK]OF-<+I*Y0E6>[!,S]].([ P?NYQ48?#NC[LJ&"*-;>=L[*%*/>
M6>JTY'XM.H[?R VIZ-4( E52L:.CZS_^(2V3/_M,/).R(X/SO<%Y3/OUWR#M
ML+;B:^HSLQM;FK$ZN^RNRV0"\[P[A.\*Y=.]R!&H8@^JB*["V_K?$$:=5RL.
MJ:?B;<4:BMH]6GU?7U7:XS>"[QCX(UH\('[B"A;G7,$S*3N:K'(_665T!=]3
M4%HQTJ78MD9DS85B_S$W?)9WZHJ#]4HGZ62PJ#ZA6>I?ULD>Z>0)I$LJ!"R3
M(O>(W@.M2:_739QG9\G0Z5R9- 1ONH<WC<*[4;SZ<:$)ID;@8AI>-ZD1J%,'
M!IZ5 ZBN3%Z4?JBS/=19%.I7[?"&EN'?%@*B,1R[@! A5<6W$#@^M#,7R7!>
M79% +*>)I:LD"O87J$S0BX9+^1(M!5^CFLD-EZ31C+5D]S#=1$KJA]SK/G*&
MV0"S1^:B"* ^(-DTFH/F*]+>4JGY\B"E&)PFRAI&%JP)II=>^YGRR[FT'<]%
M9N<BBZ[@V]ZG=":F;$? S[PV9\XZE,DL&:Z6*W4QFY:A!;/,G49Y\OICNP/"
MX"*T(-A][#1Q7,F5FDZS #3+L6F<9.=<]EY#I6)K4[A1(EIP*>-@]+ZBTA1P
MX%*-N=O']7K34&7R4:L$$)K?M-R-D2P=6N81RF>A6;=,G4:YS;K&ACP$_:)P
MIQXG93Y$Z(I-DSP/(+3TF,;Y$1"*[3"EZ[4 Q (2IV:C@,NX)'AQ4-KTJ#U"
M:5DD =B6*],X6<Y-(T&%_!.T.) N66#M/40X39V8<Z4*')I9RY=IG# _]I48
ML/D3B<&EP(O)U(D]GU098,K44F7Z%%?2#6'U(XMW<<C5B@IHUJ <:56,?EP^
MO,"9FS9<L=F!?<>=D27.+$Z<7PS(TSDG\_!@-IL,X\PCAH-@+5]F40XRC<3O
M+L9[W<>0<#8$[I$J, X@M^R695&FU\0A3P$9)<GG4OJYM!T;;=DRB[/EG&R8
M@A+,1$7-U%8$C/;0)DZGPP3C$RLGLTE@;2QS9G'FA$*WHK267>'(6KD5I*VH
M:0EW5#R@)1?:X\#/U$/'L+]MV4:WCEYK7!)T+'%% B2969+,XB2YCXVM[BV
M\-FI+N=C3L_L>\1@]@-U2V:I,RNCD?&!M3#;)\",,O"S(^-,VHZ-ML2;Q8GW
MV.4$W?%FIZ>@@LZ5*:3%_9/@<BR>%;FS5J[8K)QE@7HALV2<Q<GX*WG8;P/6
M=*&0V;,]&;R'>W$YG0ZW!7QR #[4>F>6I;,G6/H ?D?.V@@O5 \EI\[^A5<J
M"Y0\V%(RCE,RE#R"$DG1BYIVWU[J>*X%6<9K8.R2[K"2](A<I)- ^XTM,>,X
M,=N9;:';;DWZ;(P-?-&P6U,/^_<X7;J%RG8(VB=4A.;9<C*.=YS?Z&8KJI5!
MN=2E^QK02[U!XT7JMI3#L/.(0"8-9$A\L%T<IU&S9P1ECIE$(%,J*J9SO&8B
MTU<@4WL*VIBFSVQF2B58I:_DBL 5TE0PW$OO[?*P:I8,.SNOU"10%F%+O?CI
MG6&GH%N>R C8UY)BQWE<*3S!H46Q=(OC=/OS<DDKI1T'&FNSC8.@"J6HZK=T
MP)6T8:\Z\W3!L".-"1&]; <+I'_W6N?R[:08[J1YA,I FL26D7&\F>VWZ[L<
MQ/YG.]S>%9>YXU^N5+!YQ)9F\1/][<G(T05:T%O6ZNT2O:A0ZS'NCQ>76R>9
MP\ >*2B60O%B"1C'"?A9!E'=@T9-<8DV3:939VU<,0B@0-F-+1OC6;3PN]EN
M-HTY5H06P4!>-J"#M=TA=.!@ 4<I_MFG8F?2=GPL9ID^CS.].4IEK:)Z\4P6
M]QZ0N9R=)LG0XWQ2. GDN=PR>QYG]A[BXR9,3S9>F"Y+9[F3CGU262C2<\OE
M>9S+/QQL\0-M0&SH,Z!M6T.1=U202 B,EK<7H725/TWS'I$4!_8V<LOR>9SE
M_1:8_J#5FXG+)6L8,,R3!KA,[1C@BN2X" 1T?G#*&R?S#_T\?S+$\<46?NB?
MG^EZ0<6_O'BC2I\;T.?2=CP%MBK(XX?*IS:S^5E/AL^E[=AH6R_D\7KA=Q?_
MN7=;>^BL/J%0\9_;TB"/EP:?S"DV_+W;LJ9^/"3Y1!<$@NL5^I6VT,5*2N.^
M&WW&LY?Q3-J.9\36%OGT/+X;+5&>;?29M!T;;8N0_/0M@8T GF,;?69L'=FZ
ML'<N/#L LV']Y!,*'<X7MG8HXK7#]U:?XP%%?*,[VFYI/,O&E3W[590S:3LV
MW=8DQ?_UV+PXZ['YN;0=SX4M?(IXX;-W W+:^7FOKCQ*I]-BN+7E$QON$HT/
M7B]<4W%KWKJ4R,#H7L[;W]V_V?G6O,\XN/\N?3/OWL^T:KK713\3 4V9!#I9
M@LKD]02"2'1O8'87BF_,2XP+KA1?FZ\K2J#JTP+P^Y)S]7BA'[!_#_;ZOU!+
M P04    " !U2BM9Y8PV=+<#   4"   &    'AL+W=O<FMS:&5E=',O<VAE
M970X+GAM;(U6;6_;-A#^*P<-V#K M?R6;,AL [:3(BG0SHB[]D.Q#[1TDKA0
MI$92L=-?OSM*5NS--?;%XLO=P^>Y.QX]W1G[Y I$#_M2:3>+"N^KFSAV28&E
M<'U3H::=S-A2>)K:/':519$&IU+%H\'@.BZ%U-%\&M;6=CXUM5=2X]J"J\M2
MV)<E*K.;1</HL/ H\\+S0CR?5B+'#?H_JK6E6=RAI+)$[:318#&;18OAS7+"
M]L'@L\2=.QH#*]D:\\23AW06#9@0*DP\(PCZ/.,*E6(@HO%WBQEU1[+C\?B
M_BYH)RU;X7!EU!>9^F(6_1I!BIFHE7\TNWML]5PQ7F*4"[^P:VT'$22U\Z9L
MG8E!*77S%?LV#O_'8=0ZC +OYJ# \E9X,9]:LP/+UH3&@R U>!,YJ3DI&V]I
M5Y*?GW\T'F$(;V$IG'1@,EA;=*B]X*!-8T]GL&6<M'C+!F_T';QK^&"T+QS<
MZ1334_^8N'4$1P>"R]%%P/>UZL-XV(/18#2Y@#?N!(\#WOB"8 ?>P#NIA4ZD
M4+ AL4B%YMTYO0W<Y#P<WYD;5XD$9U'%@;//&,U__&%X/?CM ME)1W9R"7W^
MN\V%EM]"+GJP,MH9)5/1U+-.3W+%N3NG"6ZE2Y1QM47X^@GW'I;*)$]_GM-Z
MF4U;*Y\*!*D]6EE"TE'"%++N=/=Z.E<4TO5YNY85P@/[Z<"7S.Z-2J7.78_6
MDWXO2'+UULE4"BLI36^HO,/]?4;UTH-HO7ZXC^B[,F4E] L-C87H$7/IO!7:
M1S^#()FU%G4JB5(/MK4GLHFJ4P2A%(CT+[I4#35?"$\_""W<3XYNEJ96Q-M!
MFDS1.M"8H'/4LKAL,B&M>FD4!N=7U95QLDL-988:0]!/'=0&R0ZHBP8G6I$F
M=5 U"<2TSV%U>,(O,'">(31W($6@26TMA>S8K@\KM)[Z+PEMNO2!0V:,UYRT
MM"L!!X5X1M@B4L&4TG/>JMJZFJ+'\C9\ JD@0T:XVR>%T'D(42E=:,5OHLW=
MBB)M:]5:6<QKU2@,.D[+8BL4!0BA>61$",E[H6L.Z.%BDT /P\'1>K]9IY_Q
MOZVO_NN^D;F6F4Q8Q4=Z"A9)8FKM.5)K(I*PGD?,T++&TY0O-&$IVJV,I5AK
MX&Y_RJ4]9%%9J6!TW4YOZY )1G-R#]2H3O6<N__Q4:<NT>;A/>),$]FF:7>K
MW9.W:#K]JWGS7GX0-I=44@HS<AWT?[F*P#9O4#/QI@I]?VL\O2)A6-"SC98-
M:)^KXS#A [H_ O-_ %!+ P04    " !U2BM97N_T.P $  #O"   &    'AL
M+W=O<FMS:&5E=',O<VAE970Y+GAM;(U676_;-A3]*Q<:L*5 $CF.FQ6>;:!.
M5VP#6@1QMST,>Z"E*XLS1:HD%<?[]3TD937I'&,/B?AQ[[GG?M*SG;%;5S-[
M>FR4=O.L]KZ=YKDK:FZ$NS0M:]Q4QC;"8VLWN6LMBS(J-2H?CT8W>2.DSA:S
M>'9G%S/3>24UWUER7=,(NU^R,KMY=I4=#N[EIO;A(%_,6K'A%?O?VSN+73Z@
ME+)A[:319+F:9V^OILM)D(\"?TC>N2=K"IZLC=F&S:_E/!L%0JRX\ %!X//
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
MQ;:"N[5"]X2:@7SRL.L?X;E D+Z1WK\WTO?/P&"^3VDX6+[ZN +  !4E!SS
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
M#!4QE8;P:6.#'8^TJ3,E_^7<T?9<YW2^$-F.N]_@WG"$BB1URN2AIF7D5^3
M(.Z,KRTIG^3JR)=-PH>=U>.K>I\"]!-$%Q?TC&-^#B\G]!R-)_5(WG!P)_A4
MID1D1V$P7DO(=L%\:G2^^D.)_-Z^H*$S%MZNT"22?#X0.(2S!V8:$_K-ONRC
M;V1.Z3V%;>C\)(+"9S0%G+U7L$9A[!NXS3*#&4U/>$]"DD[K!+Z(O$+XM)T
M(!Q\$*JB8[^3L9@CCX)H#&' D4]:>"F<1? &)L%T3$=33/NEY":FRE'UYBB=
M%[D@F2@.1A$)G>_ZHR;$VIA@GK'_G0R-V%\PO80HX&44<GZI+99$9)I.+U0^
M/[F0/=?EVCJO2)!F2V<&5HHU7@\42"O#:)AM^T4**&,@TE1ZZWV68@#\( 2F
MS?X1VSL#EN/U^H30JU>JTR '66<P%ZZ>/(<]!'LD]AS<=IKSJ:VO<^3'^CBW
M<VIOY/D;F'3KM@/W<]+QZ ^^ Q3>9^[_H2!S\#(8#KG]^N'%M)Z1Y"X*IS -
MIA%\J5/#&9;65DR\BR$1C[0F\*YE(X5DT'F6^O#$BL"?Q9ZB81"/][#L3H]A
MZ(&$XQK(= BWECFV*U;(/.<:^MX[=+D8=&Z"!9K,WW<M$:!2KKX4MKOME?JV
MODENQ>O[^$=A,LHEY#@G5>I0NL&:^HY;OSA=^GOELW9T2_7+!?TM0,,"]'VN
MZ7+1O+"#]H_&[#]02P,$%     @ =4HK62Y?*0.  P  -0@  !D   !X;"]W
M;W)K<VAE971S+W-H965T,38N>&ULE59MC]LV#/XKA%<,+9#%LIU<DEL2H.FU
M: >T.#3=^J'8!\6F8^%DR97D2^[?EY*=7&[+!>T7ZXU\^) 4*<]WVMS9"M'!
MOI;*+J+*N>8ZCFU>8<WM4#>HZ*34IN:.EF8;V\8@+X)2+>.4L:NXYD)%RWG8
MNS7+N6Z=% IO#=BVKKEY6*'4NT641(>-SV);.;\1+^<-W^(:W=_-K:%5?$0I
M1(W*"JW 8+F(7B?7JY&7#P+_"-S9DSEX3S9:W_G%AV(1,4\()>;.(W :[O$-
M2NF!B,;W'C,ZFO2*I_,#^KO@._FRX1;?:/E5%*Y:1-,("BQY*]UGO7N/O3]C
MCY=K:<,7=IULED:0M];INE<F!K50W<CW?1Q.%*;L&86T5T@#[\Y08'G#'5_.
MC=Z!\=*$YB?!U:!-Y(3R25D[0Z>"]-SRDW8(,_@#WG*CA-I:N$4#ZXH;G,>.
M#'BQ.._!5AU8^@S8%7S4RE46WJH"BZ?Z,1$[LDL/[%;I1<"_6CF$+!E RM+1
M!;SLZ&T6\+(+WEIP&MX)Q54NN(2UXP[IECE[SM\.;G0>SA?,M6UXCHN(*L*B
MN<=H^?MOR17[\P+9T9'LZ!+Z\O\9@6]?<.]@)75^]^\YNA<!S]/M+\"7RB ^
M21]0\!]"\-=B_\R)3XO_9">S%;<BAUTH!Y+E]VBHNB'7=4U5:+T?%J@]6,=5
M0?X!=_\!G QFXQ%,!RR=^7G&_#R9P(V0K:]AP+*DH@9= GYOA7OPX-2E+ ^%
MWDBN+"23!)*$P7A"E_OK+["QU)_\I&REA"*8),GI($G'_IL%3M-)SVGM*!>@
M&R]D@3"H4UEG1.ZMV7"HM .A<MGZT D%K@KVF]9U?,F-8(9.\9#RAE(>R/G3
M ]F ML&<MQ8#2F<6<(\F%[37D%WOCH&MX<I!05?[L(G['-$S\(J',% ?OJ/&
M?] K#]Q.8L-@,J- CB"9_HRS.^&JGR.T\0_"!38G"4PF##YAB**N$5Y*;>TK
MNC=D>D-1W$CT-?TD3"\@&Z33&8T)W:.4QM%@DOGQ9<(8O'KL=SW:8\0OXG:W
M^P6PX2@)0Y*%X8IY:#9D"6'?].D,8NQ4;#P[$3O7(^*35EZCV88'RQ*'5KFN
MJQ]WCV_BZ^XI>!3O'M2/W&P%Y4EB2:IL.!E'8+I'JELXW82'8:,=/3-A6M&[
MCL8+T'FIJ3?T"V_@^*>P_ %02P,$%     @ =4HK62EFZ,,6"0  ]A@  !D
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
MB@CP_5)*4S\0@^;[[MW_ %!+ P04    " !U2BM9VJQB_,,"   7!@  &0
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
M88VP=VK[#;M\3AQ?IH3Q7]BVOM-) %ECK*HZ,"FHN&S_;-?=PP'@-'H'$'>
MV.MN WF5E\RR=*;5%K3S)C:W\*EZ-(GCTA5E936=<L+9]%99A%$"G^ .,Y06
MSK-,-=)R6<!2*TGK#*D(ULQ"2_$<*LPZ[D7+';_#/8$;)6UIX*O,,7^)#TEG
M+S;>BUW$1PF_-V((X]$ XBA.CO"-^^3'GF]\)'D#5L$5ETQFG E866;?S[>E
M2]ZF<_US9FJ6X3R@!C&HGS!(/WX83:(O1\0FO=CD&'MZ4!@2*7.F<P,/=4YZ
M@4RX*)DL$+A\64).>=4"X=<][BPLA,H>?[^5VO'@^V=R+>%6/6&U1NV*,!Z0
M.?0KB*8#6&'A[H[>4JVT%W"O:IY!?!K!=55K!W5WZ^Z\]6%KTK:'77*3"64:
MNCRXI.?HPXQ.!EVHUUO)T.GI=U_K^3R@XTQ5"/=L1XRME&GROY1GMZ,2*)Y4
M]JU2A@<-6*$N_)@QX,O0]F*_VT^R\[:!G]W;,7C#=,&E 8$;@D;#Z4D NATM
MK6%5[=MYK2P-![\L:1JC=@YTOE%4J\YP ?KYGOX#4$L#!!0    ( '5**UGP
M7IJ%B@(  )H%   9    >&PO=V]R:W-H965T<R]S:&5E=#(R+GAM;'U4VV[3
M0!#]E9&1X 7BQ$DO*HFEIJ6"2H6J+?" >-C:DWC5O9C=<9S\/;/KQ*2BS8L]
MU[-G=G9FVEKWY"M$@K56QL^2BJ@^2U-?5*B%']@:#7L6UFE!K+IEZFN'HHQ)
M6J79<'B<:B%-DD^C[=;E4]N0D@9O'?A&:^$V<U2VG26C9&>XD\N*@B'-I[58
MXCW2]_K6L9;V**74:+RT!APN9LGYZ&P^"?$QX(?$UN_)$"IYM/8I*%_*63(,
MA%!A00%!\&^%%ZA4 &(:?[:827]D2-R7=^A7L7:NY5%XO+#JIRRIFB6G"92X
M$(VB.]M^QFT]1P&OL,K'+[1=['B80-%XLGJ;S RT--U?K+?WL)=P^EI"MDW(
M(N_NH,CR4I#(I\ZVX$(THP4AEAJSF9PTH2GWY-@K.8_RKY801D?P 1ZXI[YQ
M&[@G6SQ-4V+T$),66Z1YAY2]@G0,-]90Y>&3*;%\GI\RJYY:MJ,VSPX"7C=J
M ./1>\B&V>0 WK@O=1SQQ@=*]4 6KJ01II!"<:F"D)\8^9?J[> F+\.%:3GS
MM2APEO X>'0K3/*W;T;'PX\'R$YZLI-#Z/GS;L"O!UP3S!7+OU^B>AALU^2'
M"GF0ZL85%3]DJ)U=.J%!U"RML 2>DF\%V4=T,(G7/H)++% 'PTDT9/\%[/1Q
MYQ\ M:A6"-?"-#SE?0.A0H?0"@_&[I.(8REIP^^>*G;XFN<U=(F8[(75M3";
M=QY\)=@'=@&%U9J)^G@O9>.D6<98JAPB>+D&?CB;@P\GW9L7C6X9MX)GY,90
M-SJ]M5\\Y]V\_0OOMM:-<$MI/"A<<.IP<'*4@.LV0:>0K>/T/5KB68YBQ<L3
M70A@_\)R<[9*.*!?Q_E?4$L#!!0    ( '5**UEVA+<D700  ',*   9
M>&PO=V]R:W-H965T<R]S:&5E=#(S+GAM;)U6VV[C-A!][U<,U+1/7EN^Q#52
MVT"<O31!=QMLTNU#T0=:&EO<4*26I.)XO[XSU"5*8+M @5Q$<N;,.</AD/.=
ML0\N0_3PE"OM%E'F?7$Q&+@DPURXOBE0T\K&V%QX&MKMP!4611J<<C48Q?%T
MD NIH^4\S-W:Y=R47DF-MQ9<F>?"[E>HS&X1#:-FXK/<9IXG!LMY(;9XA_[/
MXM;2:-"BI#)'[:318'&SB"Z'%ZL)VP>#+Q)WKO,-K&1MS ,/KM-%%#,A5)AX
M1A#T[Q&O4"D&(AK?:LRH#<F.W>\&_7W03EK6PN&547_)U&>+:!9!BAM1*O_9
M['[#6L\YXR5&N? 7=I7MA(R3TGF3U\[$()>Z^B^>ZCQT'&;Q$8=1[3 *O*M
M@>5;X<5R;LT.+%L3&G\$J<&;R$G-FW+G+:U*\O/+3\8C#*?P!CX9G1CMK5%D
MLX5K[=&B\_.!IS!L/$AJR%4%.3H".86/A),Y>*=33%_Z#XA>RW'4<%R-3@+>
ME*H/XV$/1O%H<@)OW&H>![SQ"<T.O('W4@N=2*'@S@N/5&O>'=);P4T.P_&Q
MN7"%2' 1T;EP:!\Q6O[\XW :_WJ"[*0E.SF%OCRR+?!6ND095UJ$O^_QR<-*
MF>3AGT/T3P8X3+\IBS\TW)2:/D/RQSWPF;3I#[>E=:70GI/H,P11%$HF8JT0
MMJ5,*:D(4L/EW17,XO,>K$I'49V#*Y.O*>E\(!T(G1ZK.@?:^/J7;.">@I!O
M(?0>,D&N,(U_@J[GIMU+V:2(&#"YFR^PRV22@:Q0@P28#>,>06IG%!&N")%Q
M(JS=,Y[(34D"S:82Z!SZBK&28BV5]))JJ%ZE"#X3'@1M1M)"8@KK?5AOF'OC
MA:+IL]&T/Z'33,RY,1'HV?"\?][,]*C;N0)#OU+['@7G0'0*]NTI>)$0D7XM
M0\J0-2<FQT;Z"S*NK7&&H[9N:]FTB?B4J#+%X%184QC+2V0/+F-5Y$"<J-.Y
M2BFE4GAOY;KT8=?K.M!&O^EN2K,5?;A,4QD@%2OJ)B44G0[ AV.?"F@Q1;JE
M>.98;$X?Z298NG0 OY72[ZG)4A4<R-%:J%"\H:&Z/J69 N?X_;O05, -UY W
MIE11X+PTI7"4Q1IYZ,KU5]I8IB^@*,FM"%B-1J[/#6U[I_P]7'*]_]\PG*&\
M"F+YAG+/I<K8DQD= ^HEGMQ*Z3+V_KU3X1MK<GA7)8V/XG.)O=Z.#]<?8$>Y
M/AOVXY>U'?>'[00](X( GUG$5S7-'0:<?#HTW:WW.O&4#IESF10DYOFHAL-H
M3;FE T]JN4\0<?KQ.Q-&]Z?R)WB[!;?5E!3"1D@+CT*56&F;=:0$;=/^^/G8
M\@R;64R,I;NO+;/7Y4?(+S7>"%WR>CM!?/_#XM#=,N@\!'*TV_#<<53BU,JJ
M-T$[V[ZH+JN'Q+-Y]1S[*.Q64G-0N"'7N/_+>5054#/PI@C/BK7Q]$@)GQF]
M"M&R :UO#-TA]8 #M._,Y;]02P,$%     @ =4HK6;_!KF&> @  X0D  !D
M  !X;"]W;W)K<VAE971S+W-H965T,C0N>&ULK99=;YLP%(;_BL6D7:V%0+[4
M)4A)UJJ=UJU*L^VBVH4#!V+5V,PV3??O9QO"4HE8+=H-V.:\K_T<8_G,]EP\
MRAV 0L\%97+N[90J+WQ?)CLHL#SG)3#])>.BP$IW1>[+4@!.K:B@?A@$8[_
MA'GQS([=B7C&*T4)@SN!9%446/Q9 N7[N3?P#@-KDN^4&?#C68ESN ?UO;P3
MNN>W+BDI@$G"&1*0S;W%X&(U-?$VX >!O3QJ(T.RY?S1=&[2N1>8!0&%1!D'
MK%]/L )*C9%>QN_&TVNG-,+C]L']RK)KEBV6L.+T)TG5;NY-/91"ABNJUGQ_
M#0W/R/@EG$K[1/LZ=J1G3"JI>-&(=;\@K'[CYR8/1P+MTRT(&T'X6D'4""(+
M6J_,8GW""L<SP?=(F&CM9AHV-U:M:0@SNWBOA/Y*M$[%-WH_4A!H(W!*6(X6
M0F"6@]XG)6>^TC.8.#]IW):U6WC"+4*WG*F=1)<LA;1#OW+KQPZ]K\E:O/"
MMPR=AI\K>HZBP0<4!N&P:SV]Y2^6$[79CJQ?]/ILHR\Z!MTH*#KS7?L-N_W,
M$;^0)4Y@[NDS+$$\@1>_?S<8!Q^[8/^3V0OT88L^=+G'MUB!()BB#8A"(IYU
M_7+H80//"BTI3QY_=:7#.<=;T]'#[-OF^G*-'.D8M>D8.=.QKBB@0; =G0U>
M)&"1\E)!BAZN*,X[4^#VS3"5T 7KE/7<^W$+.W8NZBMG9_V!W=XG@9VRGL"3
M%GC2:W?-OT\8=O.ZK4_R.F4]>:<M[[3W!K^*V6U_DMDI>RNS?W2+%B!R6UQ(
ME/"*J?I";4?;^F5AKVW_7WA=_-QBD1,F$85,2X/SB3Y]HBXHZH[BI;V3MUSI
M&]XV=[H& V$"]/>,<W7HF G:JB[^"U!+ P04    " !U2BM9QD(,"V,"  !C
M!0  &0   'AL+W=O<FMS:&5E=',O<VAE970R-2YX;6Q]5-MNVS ,_17" W8!
MBMIQTJS($@-)NV$KT"%H=WDH]J#8M"U$ECR);I*_GR0[GC>D>;%(D>?P4!8U
MWRF]-24BP;X2TBR"DJB>A:%)2ZR8N50U2AO)E:X865<7H:DULLR#*A'&430-
M*\9ED,S]WEHG<]60X!+7&DQ354P?5BC4;A&,@N/& R]*<AMA,J]9@8](W^NU
MME[8LV2\0FFXDJ Q7P3+T6PU<?D^X0?'G1G8X#K9*+5USI=L$41.$ I,R3$P
MNSSC#0KAB*R,WQUGT)=TP*%]9/_D>[>];)C!&R5^\HS*17 =0(8Y:P0]J-UG
M[/JY<GRI$L9_8=?F7MGDM#&DJ@YL%51<MBO;=^<P %Q'+P#B#A![W6TAK_*6
M$4OF6NU NVS+Y@S?JD=;<5RZG_)(VD:YQ5'RR O)<YXR2;!,4]5(XK* M1(\
MY6C@[=%Z-P_)UG.H,.VX5RUW_ +W%.Z5I-+ 1YEA]B\^M#I[L?%1["H^2WC7
MB$L8CRX@CN+)&;YQW_S8\XU?X#O5\--R8TC;R_+K5,,MW^0TGQN@F:E9BHO
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
M,O?OW!\F\(%R8]P%?@*)FP1P3Y#VS8@K51N6AQ&Q3%HQO&^IISJ0J&U)4#V
M9EL"WPMM/?AN.'B!Y;A]1+X%X@\:($ETDGSOX#TL4>;VU5?45J@M-D]CN]O^
M6$R;]_0_\>:OY#.3.:4*"ER2*E4[W6G9O/3-0HNU?5T?A*:WVDY7]'.$T@C0
M^5+0([-?& ?M[];D7U!+ P04    " !U2BM9QM.R0((#   U"   &0   'AL
M+W=O<FMS:&5E=',O<VAE970S,"YX;6R55MN.XS8,_17"710[0!K+=J[3),!F
M+V@+[&*PF78?BCXH-AT+(TM>29YD_KZ4[&0R12;8OE@W\O"0%"DO]MH\V K1
MP:&6RBZCRKGF-HYM7F'-[5 WJ.BDU*;FCI9F%]O&("^"4BWCE+%)7'.AHM4B
M[-V9U4*W3@J%=P9L6]?</*U1ZOTR2J+CQE>QJYS?B%>+AN]P@^[/YL[0*CZA
M%*)&98568+!<1N^2V_7(RP>!OP3N[=D<O"=;K1_\XO=B&3%/""7FSB-P&A[Q
M/4KI@8C&]QXS.IGTBN?S(_JGX#OYLN46WVOY312N6D:S" HL>2O=5[W_#7M_
MQAXOU]*&+^P[V<D\@KRU3M>],C&HA>I&?NCC<*8P8Z\HI+U"&GAWA@++#]SQ
MU<+H/1@O36A^$EP-VD1.*)^4C3-T*DC/K;YHAS"'7^ C-TJHG84[-+"IN$%X
M>\^W$NW-(G9DR<O'>8^Z[E#35U G\%DK5UGXJ HL7NK'Q/!$,SW27*=7 ?]H
MY1"R9  I2T=7\+*3VUG RZZX;:'S[Y)[G?;HLK8OE%O;\!R7$56"1?.(T>KG
MGY()^_4*M]&)V^@:^FI#A5>T$D&7%[(R@#6W(@>N"O@@9.NP@+^#(W"/!P=K
MJ?.'?R[Y=-WJ?6407Z0-*.A/(>@;<7CEQ*?#?[*S6<=O'^J!9/DC&BIOR'5=
M4QE:[X0%Z@_6D0_D''#W'\#I8#X>P6S TKF?9\S/DVGG+Q4Q8%E25?L X?=6
MN"</3FW*\E#IC>3*0C)-($D8C*=TN[_]#S:6&I2?E*V44 23)#D;).G8?[/
M:3;M.6T<Q1MTXX5LR H!.B-R;\V&0Z4=")7+UH=.*'!5L-^TKN-+;A1])O&8
M[X;R'<CYTR/9@+;%G+<6 TIG%O" )A>TUY!=[XZ!G>'*0<'=:1,/.:)GX!6/
M8:!&_$"=_ZA7'KF=Q8;!=$Z!'$$R^Q%G]\)5/T9HZU^$*VS.$IA,&7S!$$5=
M4V.2VMH;NC=D>DM1])??Z9=A>@/9()W-:4SH'J4TC@;3S(]O$\;@YKFT>K3G
MB%_%[6[W&V##41*&) O#A'EH-F0)81\+,XBQ<['Q_%GL4J^(SUIYC687'BQ+
M%%KENJY^VCV]B>^ZI^!9O'M0/W.S$Y0FB26ILN%T'('I'JENX703'H:M=O3,
MA&E%[SH:+T#GI:8NV2^\@=.?PNI?4$L#!!0    ( '5**UGHZ%\ICP4  #<0
M   9    >&PO=V]R:W-H965T<R]S:&5E=#,Q+GAM;)58ZV_;-A#_5PY>5R2
M$^LM.4T,).EC+9HUB-/UP[ /M$3;1"11):DFV5^_(VG)\DO)$("TR'O?[XYD
MSA^Y>)!+2A4\%7DI+P9+I:JST4BF2UH0><HK6N+.G(N"*/P4BY&L!"6982KR
MD><XT:@@K!Q,SLW:K9B<\UKEK*2W F1=%$0\7]&</UX,W$&S<,<62Z471I/S
MBBSHE*KOU:W KU$K)6,%+27C)0@ZOQA<NF=7B:8W!'\Q^B@[OT%[,N/\07]\
MSBX&CC:(YC156@+!Z1>]IGFN!:$9/U<R!ZU*S=C]W4C_:'Q'7V9$TFN>_V"9
M6EX,D@%D=$[J7-WQQS_HRI]0RTMY+LT(CY8VC@:0UE+Q8L6,%A2LM#-Y6L6A
MPY X!QB\%8-G[+:*C)7OB2*3<\$?06AJE*9_&%<--QK'2IV4J1*XRY!/3?[D
MBH+KP@E\I>B<A*-[,LNI/#X?*12OB4;I2M25%>4=$!7!#2_54L*',J/9)O\(
MS6IM\QK;KKQ>@5_J_!1\=PB>XP4]\OS65]_(\WM\E6#]V^>>Y0[V<^OJ.),5
M2>G% .$OJ?A%!Y.WO[F1\Z['MJ"U+>B3/IG659531+LB.5R1G)0IA:DIR\^E
MK3T-XCN:$T4S4+S)U]_&'[BG3PJN<IX^_+//M5[E^UW[5E&!2LL%D#*#CZPT
M)N56*Z;FN4T-?"%EC16]7MBB)E)2)<_@5F S$>K92/SPLV:5=ABQMQ!<2G@#
MX\#38^S 99K616V=S2A:E3(; <U*"BX4^]<N'(7C$(YQ\B.<#JHH,9)OP ]B
M' -_RT3(&9FQG"E&T<S]6\\@EZCV1%%1:$G:4M?U#U+GO%Q8XLA#_?=<9W9^
M2*MQ?B5Q'7E+UH1O>_WNV_?5'C)&P[&?F#F(XAW2#?\.;6YY.(Y"/;I!#T/'
MR6&4C''T,'G65W[8!I0;#Z,P,+.;!-!306%;06%O!9EZ&,(UE^J51=$K;W]1
MW"\%I1M];ET*4_9T8,>8!BE:)M&^4O*<90;94X63!J@$/F_"C 1PG6-BV9RE
M%N.FJ'#P.[\:W%GAUT;X9;<P4&('(28NN"1);N+OZT+P?9T!G>8DQCZ#B:2:
MJMR3L7:7/N&% #<]\/$OW %'XV9''<;FTUM25.\N&VZ)-9A X$60C'U($@][
M70N]KIPC]_AE62@B'(.'#< +0IC6LQ,K@I4I+^@>AA,X\ASL%C@'>K: [:;I
M#80(9!P=5U?ET'-B,[OQN ^L40O6Z/7M_IK()7S$Z]'>5O^_^GROUOV0/@S;
M-=:,A15A&:!]NOW6&K(8WKS6'*P$M:10H*6U,%[I=!WLK!HKJ9:(E\0YNBUA
M+GBQV1MU!MQ(#V&W_[S,M@G)/?1;;4EB4AU$33)VNN7"9PIOM-8W^I0N2;F@
MQOD2+YK6,S[+V<+6ZTY/E5O=3NO00/*'07^WBUL Q;T ^F&NFS0[(;]0\:)I
M _=8/]*<?>^93'6:X(ZH5\.G7^<F,'8LP,QCR-:-0!E;CC" SY0(>7RV?2WP
M3I/=N+G>:;PK.VN\$=J;'4G1:0"_[Y'EZ/6>:"=MM)->SQMU.K!K+:L3YVMS
M&@[AAJA:Z'/Q=>'N5?K2K6S5%S:. ?Q$B.I:E%C5A:UJ6F::?NN2%EI4NIXM
MM(9/ITISZ#ZPR1 A^1@[+9X9+Q/'FCAQP'^-Y$031SZ,7T$[1MK(C;%SOTCK
M.Q"YYNJUQ).+S!&/^I:4K&]C%J<5>;9'L [$T,63Q-S%OE*)0+.]#K%M4E":
MR+/F*#Q*AJ$3FG.D*[!;^D1M]=/US6>\OQ&,.H^Y@HJ%>;)*,/"W[[IVM7T5
M7]K'X)K</JEOB%@PO$WD=(ZLSFF,-QYAGZGV0_'*/ UG7.%#T_Q<XLN>"DV
M^W..3Z;5AU;0_J]@\A]02P,$%     @ =4HK60^DO@)Z @  DP4  !D   !X
M;"]W;W)K<VAE971S+W-H965T,S(N>&UL?51M;],P$/XKIX 02&%Y:=)UHXVT
M#A!,&IJV 1\0']SDTD1S[,YVENW?<W;2K$#7+_&=?<]SS\6^FW=2W>D*T<!C
MPX5>>)4QF],@T'F%#=-'<H."3DJI&F;(5>M ;Q2RPH$:'L1A. T:5@LOF[N]
M*Y7-96MX+?!*@6Z;AJFG)7+9+;S(VVY<U^O*V(T@FV_8&F_0?-]<*?*"D:6H
M&Q2ZE@(4E@OO+#I=)C;>!?RHL=,[-MA*5E+>6>=KL?!"*P@YYL8R,%H>\!PY
MMT0DXW[@],:4%KAK;]D_N]JIEA73>"[YS[HPU<*;>5!@R5INKF7W!8=Z4LN7
M2Z[=%[H^=DH9\U8;V0Q@\IM:]"M['/[##F 6O@"(!T#L=/>)G,J/S+!LKF0'
MRD83FS5<J0Y-XFIA+^7&*#JM"6>R;](@1#&\AVO41M6YP0+.F:[@[2U;<=3O
MYH&A/#8ZR ?.9<\9O\ YA4LI3*7ADRBP^!L?D+Y19+P5N8P/$EZT_ @FD0]Q
M&"<'^"9CT1/'-SE0M(:^OGWE]>AD/]JVR:G>L!P7'O6!1O6 7O;F530-/QS0
MEHS:DD/LV?8:Z,EJH&?K[H*)X5(^W;?U ^,HC(9?K@"XQ4<#2R[SN]_[:CF8
M;7\M]+N?QM\-%TRTU*[/&Z.BW!JXH^@UG/A)FM*:^K,DW7U2+C;RDWA*W\E)
MZEC\_RDLK_H'IBO9":@%F I!&V:0IH(!6?;')0T6FSL*_=DL(N/8CY,0]MU%
ML-,H#:JU&P<:<MD*T_?,N#M.G+.^T9[#^W%UR=2ZIBOB6!(T/#I./5#]".@=
M(S>N[5;24!,[LZ*IB<H&T'DIZ14.CDTPSN'L#U!+ P04    " !U2BM9"I2U
M8/,!    !   &0   'AL+W=O<FMS:&5E=',O<VAE970S,RYX;6Q]4]MNVS ,
M_17"3QNP18F3=$/A&&C:#=N #D&RR[-BT[9073R)CKN_KR0[7@:T?;%%BN?P
M\**L-_;!-8@$CTIJMTD:HO::,5<TJ+B;F1:UOZF,59R\:6OF6HN\C" E63J?
M7S'%A4[R+/IV-L],1U)HW%EPG5+<_MVB-/TF621GQU[4#04'R[.6UWA ^MGN
MK+?8Q%(*A=H)H\%BM4EN%M?;98B/ ;\$]N[B#*&2HS$/P?A:;I)Y$(02"PH,
MW/].>(M2!B(OX\_(F4PI _#R?&;_'&OWM1RYPULC?XN2FDWR,8$2*]Y)VIO^
M"X[UK -?8:2+7^B'V/4J@:)S9-0(]@J4T,.?/XY]N !XGN<!Z0A(H^XA451Y
MQXGGF34]V!#MV<(AEAK17IS082@'LOY6>!SEWPTAI/ >MIWS5\[! 6O?=((]
MML:2T#6\N4/B0CKX@8_4<?DV8^13!P)6C&FV0YKTA317<&\T-0X^Z1++__',
M2YYTIV?=V_15PF^=G,%R\0[2>;IZA6\Y]6$9^58O]:%31[1@JK%N?I1X;H5[
MKMZ!;AWIPN:?\D7&3I<*V,54%-HZ[IZ#PG2:A@%-WFF];X:I_@L?WL8]M[70
M#B16'CJ???!Y[;!O@T&FC3,^&O(;$X^-?Z)H0X"_KXR?\VB$!-.CSY\ 4$L#
M!!0    ( '5**UDEX"9BR 0  %H@   9    >&PO=V]R:W-H965T<R]S:&5E
M=#,T+GAM;+6:66_C-A#'OPJA+HH-D$2'[]0VD%C7+IHT2/9X*/K R'2L1A*]
M)&5G@7[X4D=DRU9H"YA]B75P?C/4_#4DQ8PWE+WP)2$"O<91PB?:4HC5E:[S
M8$EBS"_IBB3RSH*R& MYRIYUOF($SW.C.-(MP^CK,0X3;3K.K]VSZ9BF(@H3
M<L\03^,8LY\W)**;B69J;Q<>PN>ER"[HT_$*/Y-'(KZN[ID\TRO*/(Q)PD.:
M($86$^W:O/+-3F:0M_@6D@W?.4995YXH?<E./LTGFI%%1"(2B R!Y<^:S$@4
M9209QX\2JE4^,\/=XS>ZFW=>=N8)<S*CT?=P+I83;:BA.5G@-!(/=..3LD.]
MC!?0B.=_T:9L:V@H2+F@<6DL(XC#I/C%K^6#V#&PK'<,K-+ VC,PN^\8=$J#
MSJD>NJ5!]U2#7FG0VP^I_XY!OS3HG^IA4!H,3C48E@;#/+M%.O)<VEC@Z9C1
M#6)9:TG+#G)!Y-8RA6&2:?=1,'DWE'9B>D<%01UT@:Z#@*:)X.B!!"1<XZ>(
MH(\V$3B,./I"7D6*HS/T 84)^K*D*<?)G(]U(4/(0'I0NKLIW%GON.N@6YJ(
M)4=.,B?S!GM;;=\_9N^J[4WK&, [ C!47=#ETZ]28+VEX,92(C^GT27JF.?(
M,JPN^OIHHX\?SAHBFYV.Z30]69@HG!91*##N$0Q.MM$T90FF,[X:8Y/@#6/V
MFC&UC'>JEZZ3<[OO<#\E@1QG>/Z"%4=GV7O5\ HVO6%*=C;67?$5#LA$DX,9
M)VQ-M.GOOYE]XX\F34'"[ +6SV'9H+F>7O2-D3'6U[L".FPU&O9[]48N9%P>
M),P'@M6$TZV$TU4*YX&L29(2=$.28"GG&B_H[UL2/Q'V#_H/S?+1@C THTE
M$L%P/CMX"/FV69.>E"[;Z@D29D/"'$B8"PGS(&$^$*PFSUXESYY2GG=I)C)$
M%^@6_TM9I<C&B4*!ZNV4@;U",3ML8=9;V$<9SM$6KK)+;5,)"?.!8+54]JM4
M]I6I;)H. M0:I=.VM0829D/"'$B8"PGS(&$^$*PFT$$ET %<K5&BVLH.$F8/
MCE8P2'?NH;N]DNI!NO.!8#6!#"N!#)4"<<,$)T&((W3-.1'GR/DAE[!(4"35
MXLE9MY#R$4N<H)&!;/R3HWO,!;)3HJQ@2J=MI00)LR%A#B3,A81YD# ?"%83
MZ*@2Z*CM$'N.\"*3Y744T8U4+T&+K+0Q,@\%^I/RQN(V.EA/F4-C?RZE#*6M
MTD[QZ$!Z="%AWBGA^X>-NN9HIU4MY::Q_=QF_,*EOQK>MOJ TNR2MCNV7'0.
M5%&VVOM&L#\G!XW,:XJL:Y@'*8?R6I?&SI=8LWT]:%4)2@>J-94ZAM8Y/^K0
M 77H@M*\X^'[4 [KFK"VFK!^]21&KM;^$DO9[$XNU5+&Y&JM@''E/$<=6.M2
M TFS06D.*,T%I7F@-!^*5A?S]JNWJ?[L#37A,0^_()L'(\U,'4QKR9WBTP'U
MZ8+2O)-ZX$/Y+"2B[VQ,RK7Y<[Y)S5$N@V*[I+I:;81?Y]N_>]=OS*N9V7#=
M-J^<8IM[BR]VW6\Q>PX3CB*RD*Z,RX&L\JS8R"Y.!%WEVZ)/5 @:YX=+@N>$
M90WD_06EXNTD<U#].\'T?U!+ P04    " !U2BM9ZX@@/H4"  #"!0  &0
M 'AL+W=O<FMS:&5E=',O<VAE970S-2YX;6R%5&%/VS 0_2NG#$T@,9*FI066
M1H(R-"8Q54 W[:.;7!L+Q\YLIX5_O[.39F5JNR^QS[[W[M[%=\E:Z1=3(%IX
M+84TXZ"PMKH*0Y,56#)SIBJ4=+-0NF263+T,3:61Y1Y4BC".HF%8,BZ#-/%G
M4YTFJK:"2YQJ,'59,OUV@T*MQT$OV!P\\F5AW4&8)A5;XA/:63759(4=2\Y+
ME(8K"1H7X^"Z=S49.'_O\(/CVFSMP2F9*_7BC/M\'$0N(1286<? :%GA!(5P
M1)3&[Y8SZ$(ZX/9^PW[GM9.6.3,X4>(GSVTQ#BX"R''!:F$?U?HKMGK.'5^F
MA/%?6#>^H\L LMI85;9@RJ#DLEG9:UN'+0#Q[ ;$+2#^%S#8 ^BW@+X7VF3F
M9=TRR])$JS5HYTUL;N-KX]&DADOW%Y^LIEM..)M^5Q9A )_@$5<H:Z0U4TO)
M?8V/;]$R+@P\XZNMF3@AO]G3+1P?G< 1< G/A:H-D[E)0DO).,HP:P/?-('C
M/8&'\*"D+0Q\D3GF[_$AB>B4Q!LE-_%!PF^U.(-^[Q3B*![LR&?R'SB3^^#O
MTNEWA>U[OL$>OHDRUL"]S&JM,0?J-YC)3)650$OVA,1K>L/F%*ZEY1FO6',L
M-@]\BIJK'(Y_(=,GN^I[.'X/W@BXJPX'<6YJ7)F*93@.:"P8U"L,TH\?>L/H
M\X&J#+JJ# YF-9-S3@IS]\R0K]A<(%5@XFHD[2Z1#=W0T[F)M$I[HXOS* E7
MVY)V> W/+T>=5Y-KN-4F)>JEGQX&,E5+VW1,=]H-J&O?E^%?]V:Z/3"]Y-*
MP 5!H[,1M;=N)D9C6%7YIILK2RWLMP4-6=3.@>X7BAJO-5R ;FRG?P!02P,$
M%     @ =4HK6?02P!0%!   <Q(  !D   !X;"]W;W)K<VAE971S+W-H965T
M,S8N>&ULO5A=;]LV%/TKA%8,+=!%GY;LS#:06"[6 =F,N-D>ACW0TK4M5"(U
MDK(;8#]^U$<42V(4NQ&6ATBBSCV\YY+'%#D]4O:5[P$$^I;$A,^TO1#IM:[S
M8 \)YE<T!2+?;"E+L)"/;*?SE $.BZ DUBW#</4$1T2;3XNV%9M/:2;BB,"*
M(9XE"6:/MQ#3XTPSM:>&^VBW%WF#/I^F> =K$ _IBLDGO68)HP0(CRA!#+8S
M[<:\7IIV'E @_HC@R$_N42YE0^G7_.%S.-.,/".((1 Y!9:7 RP@CG,FF<<_
M%:E6]YD'GMX_L7\JQ$LQ&\QA0>,_HU#L9]I80R%L<1:+>WK\!2I!HYPOH#$O
M_J-CA34T%&1<T*0*EADD$2FO^%M5B), R:,.L*H JQW@O!!@5P'VN3TX58!S
M;@^C*J"0KI?:B\+Y6.#YE-$C8CE:LN4W1?6+:%FOB.0392V8?!O).#'_C0I
M#OH)W<,!2 ;R&M =B8I1K%LYVCS6B$6,.4?O?1 XBOD'B7I8^^C]NP_H'8H(
M^K*G&<<DY%-=R 3S;O2@2N:V3,9Z(1D;W5$B]APM20BA(M[OCW=[XG59F+HZ
MUE-U;JU>PE^S^ K9YD=D&9:CR&=Q?KBMDO.VWI??W7NC&'8]5>R"SWF!;XWC
M<B*DC(99(%3C6S*X!4/^&W68V][(E+T?3JNF0(U,QVRB_"[*,\>VTT0MNRC7
M\2;C&M60ZM12G8ND?D0IL "(4G-)-3G)H*5D\2K"?Q6Q[$,T-(YJC:->C:M2
M&OKK#I(-L+_1O^@+PX1O@3$($19H12,B"DO+I:'&J4K0VU.^UEWS% <PT^1B
MQH$=0)O_^(/I&C^K/#4DF3\DV7(@LL9PN?5PN6]VG]OQ@N5-1JW)J "9CMN:
MCUV0:SCCUI3L@IS)^ 7G>;5,;SCG>1U/&%>&9S3^VE[\CAA?&=.NQF7$C>*,
MZ^*,^XN30A#A6#RB591&9(?6CUQ PM$-"=&"8I&WG>OG!YZC/Y,T$^@.Q)Z&
MO1;OS>Q2BP])Y@])MAR(K#&\DWIX)V^V^*3C.=-R.PNL"C7N3.LNRK*\D=6:
MUPJ4;=H3]4PVC>?O3F,XHU=<37.U/P46:E3[ITV-:JM^C:NI^N1KV_R_'?Q[
M)LZT<']NEWIX4#9_4+;E4&S-4;:>1]EZLY$KBJ;[3*.]6JM@ACEQVI.Z"W-L
MH_.QK(#9KNN]L"R9SSL#\[*M0;^9;86U1I.V<"7*:^M6H=RVZE>H2M'ZR28Z
M ;8K3B\X"FA&1+E)JEOK$Y*;XER@U7YK7B],1;N?GZ@4F_9G^O(XY@ZS740X
MBF$KNS*N//FAR<H3CO)!T+38PF^H$#0I;O> 0V Y0+[?4KF-KQ[R#NISIOE_
M4$L#!!0    ( '5**UGWAP1T P,  &@)   9    >&PO=V]R:W-H965T<R]S
M:&5E=#,W+GAM;*V6;6^;,!#'OXJ%]J*5VO+\5"61UK33-FU3U:[;:P<NP2K8
MF6V2[MOO#!2E@:2MM#?@,W?'[W^<;29;(1]5 :#)4U5R-;4*K=>7MJVR BJJ
M+L0:.#Y9"EE1C:9<V6HM@>9-4%7:GN-$=D49MV:39NY6SB:BUB7C<"N)JJN*
MRK]74(KMU'*MYXD[MBJTF;!GDS5=P3WHA_6M1,ONL^2L JZ8X$3"<FI]="_G
MJ?%O''XQV*J=,3%*%D(\&N-+/K4< P0E9-IDH'C;P!S*TB1"C#]=3JM_I0G<
M'3]G_]1H1RT+JF NRM\LU\742BR2PY+6I;X3V\_0Z0E-ODR4JKF2;>?K6"2K
ME195%XP$%>/MG3YU==@)<(,# 5X7X+TUP.\"_$9H2];(NJ::SB92;(DTWIC-
M#)K:--&HAG'S%>^UQ*<,X_3LA]!  G).[F #O :\9V+%65/C\\;B&2L9;2;$
MDN@"R%PH31@G-T\9*&5FKUB)F5>*G%R#IJQ4IQC\<']-3CZ<D@_&]V<A:D5Y
MKB:V1F[S=COK&*]:1N\ X]>ZO""^>T8\QPM&PN>OA%-^*-S&:O4E\_J2>4V^
MX$ ^HUZAI*R6$G*"9:EY)JIU"1I-K)>6V)RC.MO$49/8K*_-S(VC))K8FUTY
M0R_/35VO]WI![??4_E'J&Z49=CT2 I7<?*LQP#9'N OHN:ZS!SCBY7JQ,PX8
M](#!<4#$0CK9]N$87#!XK9?&Z7[UAEZ^[R8'JA?V<.%1N&^FSQ?/3:X%R;&4
M8XSAD#$.W'"/<>CE.V%RH(!1SQB]J2\)],ORF?B,<-!CN-$0UT_</=H1I\@Y
M4-"XAXU?@6V7":%*@5:7I*7'#8+ H%/'1;UKY<4C%4_V/\N84QJ/"TUZH<G;
MA.(>BN2XL0*J[??+%\JR8S5XC]ID(.0\=H(]M2-.01J.JTU[M>E_[\%TN-T-
M>W#$:=B#]LXY:/Y!OE.Y8ER1$I88YES$*%:VYWIK:+%NCL:%T'C0-L,"?X5
M&@=\OA1X/':&.6W[GZO9/U!+ P04    " !U2BM9J )%*(@"   7!P  &0
M 'AL+W=O<FMS:&5E=',O<VAE970S."YX;6R-E5UOFS 4AO^*A7K12EOYAJPB
M2&NJ:IVZJ6K6]=J!DV#5V,PV2?OO9P-E+'&RW8"-W_?X.0=SR'9<O,@*0*'7
MFC(Y=RJEFBO7E44%-9:7O &F5]9<U%CIJ=BXLA& R\Y44S?PO,2M,6%.GG7/
M'D2>\591PN!!(-G6-19OUT#Y;N[XSON#1[*IE'G@YEF#-[ $]=0\"#USQR@E
MJ8%)PAD2L)X[G_VK16KTG> G@9V<C)')9,7YBYG<E7/',T! H5 F M:W+2R
M4A-(8_P:8CKCEL8X';]'O^URU[FLL(0%I\^D5-7<F3FHA#5NJ7KDNR\PY!.;
M> 6GLKNBW:#U'%2T4O%Z,&N"FK#^CE^'.DP,?G3$$ R&X'\-X6 (NT1[LBZM
M&ZQPG@F^0\*H=30SZ&K3N74VA)FWN%1"KQ+M4_EWK@#%Z".Z8UM@B@L"4L^6
M^K24+07$U^/*&SJ_ 84)E1=:\;2\0>=G%^@,$89^5+R5F)4R<Y6&,J'=8@"X
M[@&"(P!?6WJ)0O\#"KP@LM@7_[!C=LSNZE*,]0C&>@1=O.A(O$>\T^55( BF
MUFQZ>]+9S2>RS?TH3=/,W4ZA+:HPG?U1_<46CFSA2;9G_4&8:C>"%R"M='V
M>+)OG$9[;(>:Q/?M9-%(%ITDNR6,Z#-8H@WG]D,0'6SJ!VF\1W8HTF\UL*/%
M(UI\$FW9KA17F-J@XD.H) F2/2J;*@H\.U8R8B4GL>[U"T28ZB:*60$VN.1@
MVYD7[J%9-.DG.U@Z@J4GP29]P$:5'A[L>!;L<]E4<;1_R-Q)VS*_C&]8; B3
MB,):^[S+5"<F^C;<3Q1ONDZVXDKWQ6Y8Z3\7""/0ZVNNN]DP,<UQ_!?FOP%0
M2P,$%     @ =4HK63$;1GZR @  HP<  !D   !X;"]W;W)K<VAE971S+W-H
M965T,SDN>&ULK55M;]HP$/XKIZR:6JEK(*2T91"IO%3KI$X(VNVS22[$JF,S
MVP'V[V<[:08H16C;%^*7>Y[G[CC?]3="OJH,4<,V9UP-O$SK5<_W59QA3M25
M6"$W-ZF0.=%F*Y>^6DDDB0/ES ]:K:Z?$\J]J._.IC+JBT(SRG$J015Y3N2O
M(3*Q&7AM[^U@1I>9M@=^U%^1)<Y1OZRFTNS\FB6A.7)%!0>)Z<"[;_<FH;5W
M!M\I;M3.&FPD"R%>[>8Q&7@MZQ RC+5E(.:SQA$R9HF,&S\K3J^6M,#=]1O[
M@XO=Q+(@"D>"_:")S@;>K0<)IJ1@>B8V7["*Y]KRQ8(I]PN;TK8;>A 72HN\
M AL/<LK++]E6>=@!&)YF0% !@D/ >PJ="M Y52&L .&I"M<5P(7NE[&[Q(V)
M)E%?B@U(:VW8[,)EWZ%-OBBW=3+7TMQ2@]/1-Z$1NO )'GDL<H1GLD4%YV/4
MA#(%S[C5!6$7QN!E/H;SLPLX \KAB3)F_F?5][5QPE+Y<24X+ 6#=P0[\"2X
MSA1,>()) WY\'-\]@O=-\'4&@K<,#(.CA%\+=@6=]B4$K2!L\&=T.KS3%,Z_
MJ4_^6GTO&9VZ'#J.+WR';Y*FZ)[N3CW C)@:F6$L>$P9)?:!7\(498Q<-Q5
M*7'G)&R?6D>M*^O=>C>K34;A];[1N)'IP&C29'1W4QOMY2&L\Q >S<,+3ZC2
MDBX*C0E,B.24+Q6(%$Q[,LV'P[Q8*)I0(BDVOH*2_W;/JYN#'!SUP4Z(GEJ1
M& >>&0$*Y1J]Z..'=K?UN:G.3A"<_"?!,J7^3M?)42Y=NU<0BX+KLN+JTWJB
MW+M&>G ^;/=&[8;SL9E Y<#X0U^.KR<BEY0K8)@:*1.G:8JR' GE1HN5ZWD+
MH4T'=<O,3%&4UL#<I\+TO6IC!>JY'/T&4$L#!!0    ( '5**UG)0D(P00(
M 'X$   9    >&PO=V]R:W-H965T<R]S:&5E=#0P+GAM;'U4VV[;, S]%4(#
MA@U(8\?I9>L< TVZ807:(6AV>1CVH-A,(E267(E.VK\?);M!"K1]L46*Y_"0
MHI3OK+OS&T2"AUH;/Q$;HN8\27RYP5KZH6W0\,[*NEH2FVZ=^,:AK"*HUDF6
MIJ=)+94111Y]<U?DMB6M#,X=^+:NI7N<HK:[B1B))\>M6F\H.)(B;^0:%TB_
MFKEC*]FS5*I&XY4UX' U$1>C\^DXQ,> WPIW_F -H9*EM7?!N*HF(@V"4&-)
M@4'R;XLSU#H0L8S[GE/L4P;@X?J)_5NLG6M92H\SJ_^HBC83\4E A2O9:KJU
MN^_8UW,2^$JK??S"KH]-!92M)UOW8%90*]/]Y4/?AP/ Z/@50-8#LJB[2Q15
M7DJ21>[L#ER(9K:PB*5&-(M3)AS*@ASO*L91\<,2PAD<P57=2.6XW01V!=?6
MK(\T]ZN""^^1/'RX1))*>_B)#]1*_3%/B/,'EJ3L<TV[7-DKN2ZQ',)X-( L
M'9T^AR<L>Z\]VVO/(M_Q*WQSY&,YFJL&82:-K.0 KJF"OS=8+]']>TG@FX3A
M IS[1I8X$3SA'MT61?'^W>@T_?*&W/%>[OA-N=/6L\=[F-EZJ8P,4SF !6$#
M%^5]J[SJ/%]Y38]P90A9!($RW;Y#'+"WU&VES!H6[=+C?1L.[!F<NU*RDV_4
M2PWH)'Z.$L.%W1;I\"1/MH=U)0?C%&[FC71K93QH7#$J'9Z="'#=M'<&V29.
MV-(2SVM<;OB!0!<">']E><IZ(PSM_LDI_@-02P,$%     @ =4HK6>II)=$X
M @  # 4  !D   !X;"]W;W)K<VAE971S+W-H965T-#$N>&ULG539;MLP$/R5
MA9"'!$@L6[Z*0!80QSU2-$40-^TS(ZTD(A2IDE3D_GV7E*RZK1,4]8-X[<S.
MT+N,6Z6?3(EH85<):59!:6U]&88F+;%B9J1JE'22*UTQ2TM=A*;6R#(/JD08
MC<>+L&)<!DGL]^YT$JO&"B[Q3H-IJHKI'VL4JET%DV"_<<^+TKJ-,(EK5N 6
M[4-]IVD5#BP9KU :KB1HS%?!U>1R/7?Q/N KQ]8<S,$Y>53JR2UNLE4P=H)0
M8&H= Z/A&:]1"$=$,K[WG,&0T@$/YWOV=]X[>7ED!J^5^,8S6ZZ"-P%DF+-&
MV'O5?L#>CQ>8*F'\%]HN=KD,(&V,554/)@45E]W(=OT]' "BZ 5 U ,BK[M+
MY%5NF&5)K%4+VD43FYMXJQY-XKAT?\K6:CKEA+/)9V41EG !-U7-N*;KMJ!R
M^*1D<2'HOC*X,@:MH8CW2F4M%P).-V@9%^8,3H!+^%*JQC"9F3BTI,CQAFF?
M?=UECU[(OH!;)6UIX*W,,/L='Y*3P4ZTM[..7B7\V(@13"?G$(VC&3QL-W!Z
M<O8*[W2XIJGGG;W N_=^S&*'7'BDZX'G)*)?'#X?R3<;\LW^*=\Y4-]194G
M75HR62#T ^8Y%?8Q/1WS_$#/Q6)Q7,Y\D#/_;_OSO^U/YG_F"P\JM$)=^#XT
MD*I&VJY8A]VAU:^Z"O\5WKT3MTP77!H0F!-T/%J2 -WU7K>PJO;U_J@L=8^?
MEO1<H78!=)XKJOE^X1(,#V#R$U!+ P04    " !U2BM9JX)>1<X#  "U#P
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
MHZ#/5USWT79C#'1S/OD+4$L#!!0    ( '5**UE1R"( ]P,  /T/   9
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
M.IYT4 _3-:E034<U ]7,2KN2CG;W^WM1==2C[*,>Y1SU*!=]EAZJ^:@F4"U
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
M.I.L?$#Q^_O5*G_^IAS@RRK[8[O;[_X/4$L#!!0    ( '5**UG["U?QD@0
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
M[:IH)M!FHWAEA[@U5WHDM,N]GMI!& ']?,OU(-=NS%S8_0]8_@M02P,$%
M  @ =4HK6:I)$"1] P  VPL  !D   !X;"]W;W)K<VAE971S+W-H965T-3 N
M>&ULI5;+;N,V%/T50IA% DRBM_R ;2#Q TW1Z03)I%T47= 2;1%#D2Y)Q=-^
M?4E*41R*5H)V8Y-7YYS+<TE1=W9D_+LH$9+@1T6HF'NEE(>I[XN\1!44U^R
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
M/M4YCO[O'!Z-A'M='JC>,FF0>(.X:#!!'MU.;)M85?DI62N+,^?#$A\YT*X
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
M:!K8+2LS8D'9!'->2M-V_<9V\3"TL[]02P,$%     @ =4HK63ZIN]3V @
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
MVJ5QD L9>3T\$MP>:4#M.*2VBZD8_1!2:5K5N %(MB6/:<Z10J[4+!XUA])
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
M @  $0              @ &O    9&]C4')O<',O8V]R92YX;6Q02P$"% ,4
M    " !U2BM9F5R<(Q &  "<)P  $P              @ '- 0  >&PO=&AE
M;64O=&AE;64Q+GAM;%!+ 0(4 Q0    ( '5**UGLQKA$Y04   <?   8
M          " @0X(  !X;"]W;W)K<VAE971S+W-H965T,2YX;6Q02P$"% ,4
M    " !U2BM9U%%,O_@%  !9&P  &               @($I#@  >&PO=V]R
M:W-H965T<R]S:&5E=#(N>&UL4$L! A0#%     @ =4HK69K1'H:% P  ]@L
M !@              ("!5Q0  'AL+W=O<FMS:&5E=',O<VAE970S+GAM;%!+
M 0(4 Q0    ( '5**UG<?MUBVP@  %XJ   8              " @1(8  !X
M;"]W;W)K<VAE971S+W-H965T-"YX;6Q02P$"% ,4    " !U2BM9UL@6;[<"
M  "^!P  &               @($C(0  >&PO=V]R:W-H965T<R]S:&5E=#4N
M>&UL4$L! A0#%     @ =4HK67Z9;/5,"@  C%8  !@              ("!
M$"0  'AL+W=O<FMS:&5E=',O<VAE970V+GAM;%!+ 0(4 Q0    ( '5**UG-
M/[^0[P@  !,K   8              " @9(N  !X;"]W;W)K<VAE971S+W-H
M965T-RYX;6Q02P$"% ,4    " !U2BM9Y8PV=+<#   4"   &
M    @(&W-P  >&PO=V]R:W-H965T<R]S:&5E=#@N>&UL4$L! A0#%     @
M=4HK65[O]#L !   [P@  !@              ("!I#L  'AL+W=O<FMS:&5E
M=',O<VAE970Y+GAM;%!+ 0(4 Q0    ( '5**UD;X>BOJ ,  #0(   9
M          " @=H_  !X;"]W;W)K<VAE971S+W-H965T,3 N>&UL4$L! A0#
M%     @ =4HK61[%KZ'M"   LA8  !D              ("!N4,  'AL+W=O
M<FMS:&5E=',O<VAE970Q,2YX;6Q02P$"% ,4    " !U2BM95Y;8SCX#  #G
M!@  &0              @('=3   >&PO=V]R:W-H965T<R]S:&5E=#$R+GAM
M;%!+ 0(4 Q0    ( '5**UGHH@N/4P0  ($)   9              " @5)0
M  !X;"]W;W)K<VAE971S+W-H965T,3,N>&UL4$L! A0#%     @ =4HK6;#@
MHWE& P  9P<  !D              ("!W%0  'AL+W=O<FMS:&5E=',O<VAE
M970Q-"YX;6Q02P$"% ,4    " !U2BM9<PR+H2P%  !T#   &0
M    @(%96   >&PO=V]R:W-H965T<R]S:&5E=#$U+GAM;%!+ 0(4 Q0    (
M '5**UDN7RD#@ ,  #4(   9              " @;Q=  !X;"]W;W)K<VAE
M971S+W-H965T,38N>&UL4$L! A0#%     @ =4HK62EFZ,,6"0  ]A@  !D
M             ("!<V$  'AL+W=O<FMS:&5E=',O<VAE970Q-RYX;6Q02P$"
M% ,4    " !U2BM90>!::.('  #K%0  &0              @(' :@  >&PO
M=V]R:W-H965T<R]S:&5E=#$X+GAM;%!+ 0(4 Q0    ( '5**UG:K&+\PP(
M !<&   9              " @=ER  !X;"]W;W)K<VAE971S+W-H965T,3DN
M>&UL4$L! A0#%     @ =4HK6;A1V-75 @  *@8  !D              ("!
MTW4  'AL+W=O<FMS:&5E=',O<VAE970R,"YX;6Q02P$"% ,4    " !U2BM9
M]/7ZTIL"  #K!0  &0              @('?>   >&PO=V]R:W-H965T<R]S
M:&5E=#(Q+GAM;%!+ 0(4 Q0    ( '5**UGP7IJ%B@(  )H%   9
M      " @;%[  !X;"]W;W)K<VAE971S+W-H965T,C(N>&UL4$L! A0#%
M  @ =4HK67:$MR1=!   <PH  !D              ("!<GX  'AL+W=O<FMS
M:&5E=',O<VAE970R,RYX;6Q02P$"% ,4    " !U2BM9O\&N89X"  #A"0
M&0              @($&@P  >&PO=V]R:W-H965T<R]S:&5E=#(T+GAM;%!+
M 0(4 Q0    ( '5**UG&0@P+8P(  &,%   9              " @=N%  !X
M;"]W;W)K<VAE971S+W-H965T,C4N>&UL4$L! A0#%     @ =4HK649=U*7V
M P  A0D  !D              ("!=8@  'AL+W=O<FMS:&5E=',O<VAE970R
M-BYX;6Q02P$"% ,4    " !U2BM9JE[90XP"  ![!0  &0
M@(&BC   >&PO=V]R:W-H965T<R]S:&5E=#(W+GAM;%!+ 0(4 Q0    ( '5*
M*UFESKRA50(  "8%   9              " @66/  !X;"]W;W)K<VAE971S
M+W-H965T,C@N>&UL4$L! A0#%     @ =4HK6?9:7^.I P  >@D  !D
M         ("!\9$  'AL+W=O<FMS:&5E=',O<VAE970R.2YX;6Q02P$"% ,4
M    " !U2BM9QM.R0((#   U"   &0              @('1E0  >&PO=V]R
M:W-H965T<R]S:&5E=#,P+GAM;%!+ 0(4 Q0    ( '5**UGHZ%\ICP4  #<0
M   9              " @8J9  !X;"]W;W)K<VAE971S+W-H965T,S$N>&UL
M4$L! A0#%     @ =4HK60^DO@)Z @  DP4  !D              ("!4)\
M 'AL+W=O<FMS:&5E=',O<VAE970S,BYX;6Q02P$"% ,4    " !U2BM9"I2U
M8/,!    !   &0              @($!H@  >&PO=V]R:W-H965T<R]S:&5E
M=#,S+GAM;%!+ 0(4 Q0    ( '5**UDEX"9BR 0  %H@   9
M  " @2ND  !X;"]W;W)K<VAE971S+W-H965T,S0N>&UL4$L! A0#%     @
M=4HK6>N((#Z% @  P@4  !D              ("!*JD  'AL+W=O<FMS:&5E
M=',O<VAE970S-2YX;6Q02P$"% ,4    " !U2BM9]!+ % 4$  !S$@  &0
M            @('FJP  >&PO=V]R:W-H965T<R]S:&5E=#,V+GAM;%!+ 0(4
M Q0    ( '5**UGWAP1T P,  &@)   9              " @2*P  !X;"]W
M;W)K<VAE971S+W-H965T,S<N>&UL4$L! A0#%     @ =4HK6:@"12B( @
M%P<  !D              ("!7+,  'AL+W=O<FMS:&5E=',O<VAE970S."YX
M;6Q02P$"% ,4    " !U2BM9,1M&?K("  "C!P  &0              @($;
MM@  >&PO=V]R:W-H965T<R]S:&5E=#,Y+GAM;%!+ 0(4 Q0    ( '5**UG)
M0D(P00(  'X$   9              " @02Y  !X;"]W;W)K<VAE971S+W-H
M965T-# N>&UL4$L! A0#%     @ =4HK6>II)=$X @  # 4  !D
M     ("!?+L  'AL+W=O<FMS:&5E=',O<VAE970T,2YX;6Q02P$"% ,4
M" !U2BM9JX)>1<X#  "U#P  &0              @('KO0  >&PO=V]R:W-H
M965T<R]S:&5E=#0R+GAM;%!+ 0(4 Q0    ( '5**UFZP>9AFP(  /,'   9
M              " @?#!  !X;"]W;W)K<VAE971S+W-H965T-#,N>&UL4$L!
M A0#%     @ =4HK65'((@#W P  _0\  !D              ("!PL0  'AL
M+W=O<FMS:&5E=',O<VAE970T-"YX;6Q02P$"% ,4    " !U2BM9WSL4^J$#
M  #R#0  &0              @('PR   >&PO=V]R:W-H965T<R]S:&5E=#0U
M+GAM;%!+ 0(4 Q0    ( '5**UE4K3YNPP0   (4   9              "
M@<C,  !X;"]W;W)K<VAE971S+W-H965T-#8N>&UL4$L! A0#%     @ =4HK
M66U,6H>V'0  $_T! !D              ("!PM$  'AL+W=O<FMS:&5E=',O
M<VAE970T-RYX;6Q02P$"% ,4    " !U2BM9^PM7\9($  "Z&   &0
M        @(&O[P  >&PO=V]R:W-H965T<R]S:&5E=#0X+GAM;%!+ 0(4 Q0
M   ( '5**UDN3S@^?@,  !,,   9              " @7CT  !X;"]W;W)K
M<VAE971S+W-H965T-#DN>&UL4$L! A0#%     @ =4HK6:I)$"1] P  VPL
M !D              ("!+?@  'AL+W=O<FMS:&5E=',O<VAE970U,"YX;6Q0
M2P$"% ,4    " !U2BM9<3,ZH9D"   $!P  &0              @('A^P
M>&PO=V]R:W-H965T<R]S:&5E=#4Q+GAM;%!+ 0(4 Q0    ( '5**UD\UJ\[
M(P(  $(%   9              " @;'^  !X;"]W;W)K<VAE971S+W-H965T
M-3(N>&UL4$L! A0#%     @ =4HK6:?RV!'V P  $!4  !D
M ("!"P$! 'AL+W=O<FMS:&5E=',O<VAE970U,RYX;6Q02P$"% ,4    " !U
M2BM9.YA%=E0"  # !0  &0              @($X!0$ >&PO=V]R:W-H965T
M<R]S:&5E=#4T+GAM;%!+ 0(4 Q0    ( '5**UD^J;O4]@(  *\*   9
M          " @<,' 0!X;"]W;W)K<VAE971S+W-H965T-34N>&UL4$L! A0#
M%     @ =4HK65S[V5;=!0  0RH  !D              ("!\ H! 'AL+W=O
M<FMS:&5E=',O<VAE970U-BYX;6Q02P$"% ,4    " !U2BM97FE*9S,#   D
M$P  #0              @ $$$0$ >&PO<W1Y;&5S+GAM;%!+ 0(4 Q0    (
M '5**UF7BKL<P    !,"   +              "  6(4 0!?<F5L<R\N<F5L
M<U!+ 0(4 Q0    ( '5**UD)F>YTPP0  *HE   /              "  4L5
M 0!X;"]W;W)K8F]O:RYX;6Q02P$"% ,4    " !U2BM9##^0_.4!  !_(0
M&@              @ $[&@$ >&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E;'-0
M2P$"% ,4    " !U2BM9C^&W:=,!   V(0  $P              @ %8' $
I6T-O;G1E;G1?5'EP97-=+GAM;%!+!08     0 !  '<1  !<'@$    !

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>69
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// Edgar(tm) Renderer was created by staff of the U.S. Securities and Exchange Commission.  Data and content created by government employees within the scope of their employment are not subject to domestic copyright protection. 17 U.S.C. 105.
var Show={};Show.LastAR=null,Show.showAR=function(a,r,w){if(Show.LastAR)Show.hideAR();var e=a;while(e&&e.nodeName!='TABLE')e=e.nextSibling;if(!e||e.nodeName!='TABLE'){var ref=((window)?w.document:document).getElementById(r);if(ref){e=ref.cloneNode(!0);
e.removeAttribute('id');a.parentNode.appendChild(e)}}
if(e)e.style.display='block';Show.LastAR=e};Show.hideAR=function(){Show.LastAR.style.display='none'};Show.toggleNext=function(a){var e=a;while(e.nodeName!='DIV')e=e.nextSibling;if(!e.style){}else if(!e.style.display){}else{var d,p_;if(e.style.display=='none'){d='block';p='-'}else{d='none';p='+'}
e.style.display=d;if(a.textContent){a.textContent=p+a.textContent.substring(1)}else{a.innerText=p+a.innerText.substring(1)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* Updated 2009-11-04 */
/* v2.2.0.24 */

/* DefRef Styles */
..report table.authRefData{
	background-color: #def;
	border: 2px solid #2F4497;
	font-size: 1em;
	position: absolute;
}

..report table.authRefData a {
	display: block;
	font-weight: bold;
}

..report table.authRefData p {
	margin-top: 0px;
}

..report table.authRefData .hide {
	background-color: #2F4497;
	padding: 1px 3px 0px 0px;
	text-align: right;
}

..report table.authRefData .hide a:hover {
	background-color: #2F4497;
}

..report table.authRefData .body {
	height: 150px;
	overflow: auto;
	width: 400px;
}

..report table.authRefData table{
	font-size: 1em;
}

/* Report Styles */
..pl a, .pl a:visited {
	color: black;
	text-decoration: none;
}

/* table */
..report {
	background-color: white;
	border: 2px solid #acf;
	clear: both;
	color: black;
	font: normal 8pt Helvetica, Arial, san-serif;
	margin-bottom: 2em;
}

..report hr {
	border: 1px solid #acf;
}

/* Top labels */
..report th {
	background-color: #acf;
	color: black;
	font-weight: bold;
	text-align: center;
}

..report th.void	{
	background-color: transparent;
	color: #000000;
	font: bold 10pt Helvetica, Arial, san-serif;
	text-align: left;
}

..report .pl {
	text-align: left;
	vertical-align: top;
	white-space: normal;
	width: 200px;
	white-space: normal; /* word-wrap: break-word; */
}

..report td.pl a.a {
	cursor: pointer;
	display: block;
	width: 200px;
	overflow: hidden;
}

..report td.pl div.a {
	width: 200px;
}

..report td.pl a:hover {
	background-color: #ffc;
}

/* Header rows... */
..report tr.rh {
	background-color: #acf;
	color: black;
	font-weight: bold;
}

/* Calendars... */
..report .rc {
	background-color: #f0f0f0;
}

/* Even rows... */
..report .re, .report .reu {
	background-color: #def;
}

..report .reu td {
	border-bottom: 1px solid black;
}

/* Odd rows... */
..report .ro, .report .rou {
	background-color: white;
}

..report .rou td {
	border-bottom: 1px solid black;
}

..report .rou table td, .report .reu table td {
	border-bottom: 0px solid black;
}

/* styles for footnote marker */
..report .fn {
	white-space: nowrap;
}

/* styles for numeric types */
..report .num, .report .nump {
	text-align: right;
	white-space: nowrap;
}

..report .nump {
	padding-left: 2em;
}

..report .nump {
	padding: 0px 0.4em 0px 2em;
}

/* styles for text types */
..report .text {
	text-align: left;
	white-space: normal;
}

..report .text .big {
	margin-bottom: 1em;
	width: 17em;
}

..report .text .more {
	display: none;
}

..report .text .note {
	font-style: italic;
	font-weight: bold;
}

..report .text .small {
	width: 10em;
}

..report sup {
	font-style: italic;
}

..report .outerFootnotes {
	font-size: 1em;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>72
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.24.2.u1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>181</ContextCount>
  <ElementCount>315</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>true</FootnotesReported>
  <SegmentCount>50</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>9</UnitCount>
  <MyReports>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000 - Document - Document And Entity Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Statements of Operations (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited</Role>
      <ShortName>Consolidated Statements of Operations (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Statements of Comprehensive Income (Loss) (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited</Role>
      <ShortName>Consolidated Statements of Comprehensive Income (Loss) (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Balance Sheets (Current Period Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Stockholders' Equity (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited</Role>
      <ShortName>Consolidated Statements of Stockholders' Equity (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Statement - Consolidated Statements of Cash Flows (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited</Role>
      <ShortName>Consolidated Statements of Cash Flows (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Disclosure - Note 1 - Basis of Presentation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation</Role>
      <ShortName>Note 1 - Basis of Presentation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Disclosure - Note 2 - Business Segment Reporting</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting</Role>
      <ShortName>Note 2 - Business Segment Reporting</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>009 - Disclosure - Note 3 - Accounts Receivable</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable</Role>
      <ShortName>Note 3 - Accounts Receivable</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>010 - Disclosure - Note 4 - Revenue Recognition</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition</Role>
      <ShortName>Note 4 - Revenue Recognition</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>011 - Disclosure - Note 5 - Inventories</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-5-inventories</Role>
      <ShortName>Note 5 - Inventories</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>012 - Disclosure - Note 6 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes</Role>
      <ShortName>Note 6 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>013 - Disclosure - Note 7 - Impairment of Long-lived Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets</Role>
      <ShortName>Note 7 - Impairment of Long-lived Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>014 - Disclosure - Note 8 - Stock-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation</Role>
      <ShortName>Note 8 - Stock-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>015 - Disclosure - Note 9 - Earnings Per Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share</Role>
      <ShortName>Note 9 - Earnings Per Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>016 - Disclosure - Note 10 - Debt</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-10-debt</Role>
      <ShortName>Note 10 - Debt</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>017 - Disclosure - Note 11 - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases</Role>
      <ShortName>Note 11 - Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>018 - Disclosure - Note 12 - Restricted Cash</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash</Role>
      <ShortName>Note 12 - Restricted Cash</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>019 - Disclosure - Note 13 - Fair Value</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-</Role>
      <ShortName>Note 13 - Fair Value</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>020 - Disclosure - Note 14 - Recent Accounting Pronouncements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-</Role>
      <ShortName>Note 14 - Recent Accounting Pronouncements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>021 - Disclosure - Note 15 - Treasury Stock</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock</Role>
      <ShortName>Note 15 - Treasury Stock</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>022 - Disclosure - Note 16 - Noncontrolling Interest</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest</Role>
      <ShortName>Note 16 - Noncontrolling Interest</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>995445 - Disclosure - Insider Trading Arrangements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements</Role>
      <ShortName>Insider Trading Arrangements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>995469 - Disclosure - Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies</Role>
      <ShortName>Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-</ParentRole>
      <Position>25</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>995470 - Disclosure - Note 4 - Revenue Recognition (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables</Role>
      <ShortName>Note 4 - Revenue Recognition (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>995471 - Disclosure - Note 5 - Inventories (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables</Role>
      <ShortName>Note 5 - Inventories (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-5-inventories</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>995472 - Disclosure - Note 7 - Impairment of Long-lived Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables</Role>
      <ShortName>Note 7 - Impairment of Long-lived Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>995473 - Disclosure - Note 8 - Stock-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables</Role>
      <ShortName>Note 8 - Stock-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>995474 - Disclosure - Note 9 - Earnings Per Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables</Role>
      <ShortName>Note 9 - Earnings Per Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share</ParentRole>
      <Position>30</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>995475 - Disclosure - Note 11 - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables</Role>
      <ShortName>Note 11 - Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-11-leases</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>995476 - Disclosure - Note 12 - Restricted Cash (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables</Role>
      <ShortName>Note 12 - Restricted Cash (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>995477 - Disclosure - Note 2 - Business Segment Reporting (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual</Role>
      <ShortName>Note 2 - Business Segment Reporting (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>995478 - Disclosure - Note 3 - Accounts Receivable (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual</Role>
      <ShortName>Note 3 - Accounts Receivable (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable</ParentRole>
      <Position>34</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>995479 - Disclosure - Note 4 - Revenue Recognition (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual</Role>
      <ShortName>Note 4 - Revenue Recognition (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>995480 - Disclosure - Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details</Role>
      <ShortName>Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>36</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>995481 - Disclosure - Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details</Role>
      <ShortName>Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>37</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>995482 - Disclosure - Note 5 - Inventories - Schedule of Inventory (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details</Role>
      <ShortName>Note 5 - Inventories - Schedule of Inventory (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>38</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>995483 - Disclosure - Note 6 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual</Role>
      <ShortName>Note 6 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>995484 - Disclosure - Note 7 - Impairment of Long-lived Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual</Role>
      <ShortName>Note 7 - Impairment of Long-lived Assets (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables</ParentRole>
      <Position>40</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>995485 - Disclosure - Note 7 - Impairment of Long-lived Assets - Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details</Role>
      <ShortName>Note 7 - Impairment of Long-lived Assets - Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>41</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>995486 - Disclosure - Note 8 - Stock-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual</Role>
      <ShortName>Note 8 - Stock-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables</ParentRole>
      <Position>42</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>995487 - Disclosure - Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details</Role>
      <ShortName>Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>43</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>995488 - Disclosure - Note 8 - Stock-based Compensation - Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details</Role>
      <ShortName>Note 8 - Stock-based Compensation - Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>44</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>995489 - Disclosure - Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details</Role>
      <ShortName>Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>45</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>995490 - Disclosure - Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details</Role>
      <ShortName>Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>995491 - Disclosure - Note 10 - Debt (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual</Role>
      <ShortName>Note 10 - Debt (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-10-debt</ParentRole>
      <Position>47</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>995492 - Disclosure - Note 11 - Leases (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual</Role>
      <ShortName>Note 11 - Leases (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables</ParentRole>
      <Position>48</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>995493 - Disclosure - Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details</Role>
      <ShortName>Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>995494 - Disclosure - Note 11 - Leases - Lease Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details</Role>
      <ShortName>Note 11 - Leases - Lease Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>995495 - Disclosure - Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details</Role>
      <ShortName>Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>995496 - Disclosure - Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details</Role>
      <ShortName>Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>995497 - Disclosure - Note 11 - Leases - Maturities of Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details</Role>
      <ShortName>Note 11 - Leases - Maturities of Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>995498 - Disclosure - Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details</Role>
      <ShortName>Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>54</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>995499 - Disclosure - Note 15 - Treasury Stock (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual</Role>
      <ShortName>Note 15 - Treasury Stock (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock</ParentRole>
      <Position>55</Position>
    </Report>
    <Report instance="ppih20240731_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>995500 - Disclosure - Note 16 - Noncontrolling Interest (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual</Role>
      <ShortName>Note 16 - Noncontrolling Interest (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest</ParentRole>
      <Position>56</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File>ppih-20240731.xsd</File>
    <File>ppih-20240731_cal.xml</File>
    <File>ppih-20240731_def.xml</File>
    <File>ppih-20240731_lab.xml</File>
    <File>ppih-20240731_pre.xml</File>
    <File doctype="10-Q" isDefinitelyFs="true" isUsgaap="true" original="ppih20240731_10q.htm">ppih20240731_10q.htm</File>
  </InputFiles>
  <SupplementalFiles>
    <File>logo.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="2">http://fasb.org/srt/2024</BaseTaxonomy>
    <BaseTaxonomy items="696">http://fasb.org/us-gaap/2024</BaseTaxonomy>
    <BaseTaxonomy items="29">http://xbrl.sec.gov/dei/2024</BaseTaxonomy>
    <BaseTaxonomy items="5">http://xbrl.sec.gov/ecd/2024</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>75
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "version": "2.2",
 "instance": {
  "ppih20240731_10q.htm": {
   "nsprefix": "ppih",
   "nsuri": "http://investors.permapipe.com/20240731",
   "dts": {
    "schema": {
     "local": [
      "ppih-20240731.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd",
      "https://xbrl.fasb.org/srt/2024/elts/srt-2024.xsd",
      "https://xbrl.fasb.org/srt/2024/elts/srt-roles-2024.xsd",
      "https://xbrl.fasb.org/srt/2024/elts/srt-types-2024.xsd",
      "https://xbrl.fasb.org/us-gaap/2024/elts/us-gaap-2024.xsd",
      "https://xbrl.fasb.org/us-gaap/2024/elts/us-roles-2024.xsd",
      "https://xbrl.fasb.org/us-gaap/2024/elts/us-types-2024.xsd",
      "https://xbrl.sec.gov/country/2024/country-2024.xsd",
      "https://xbrl.sec.gov/currency/2024/currency-2024.xsd",
      "https://xbrl.sec.gov/dei/2024/dei-2024.xsd",
      "https://xbrl.sec.gov/ecd/2024/ecd-2024.xsd",
      "https://xbrl.sec.gov/exch/2024/exch-2024.xsd",
      "https://xbrl.sec.gov/naics/2024/naics-2024.xsd",
      "https://xbrl.sec.gov/sic/2024/sic-2024.xsd",
      "https://xbrl.sec.gov/stpr/2024/stpr-2024.xsd"
     ]
    },
    "calculationLink": {
     "local": [
      "ppih-20240731_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "ppih-20240731_def.xml"
     ]
    },
    "labelLink": {
     "local": [
      "ppih-20240731_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "ppih-20240731_pre.xml"
     ]
    },
    "inline": {
     "local": [
      "ppih20240731_10q.htm"
     ]
    }
   },
   "keyStandard": 274,
   "keyCustom": 41,
   "axisStandard": 24,
   "axisCustom": 0,
   "memberStandard": 21,
   "memberCustom": 27,
   "hidden": {
    "total": 44,
    "http://investors.permapipe.com/20240731": 6,
    "http://fasb.org/us-gaap/2024": 28,
    "http://xbrl.sec.gov/ecd/2024": 4,
    "http://xbrl.sec.gov/dei/2024": 6
   },
   "contextCount": 181,
   "entityCount": 1,
   "segmentCount": 50,
   "elementCount": 464,
   "unitCount": 9,
   "baseTaxonomies": {
    "http://fasb.org/us-gaap/2024": 696,
    "http://xbrl.sec.gov/dei/2024": 29,
    "http://xbrl.sec.gov/ecd/2024": 5,
    "http://fasb.org/srt/2024": 2
   },
   "report": {
    "R1": {
     "role": "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information",
     "longName": "000 - Document - Document And Entity Information",
     "shortName": "Document And Entity Information",
     "isDefault": "true",
     "groupType": "document",
     "subGroupType": "",
     "menuCat": "Cover",
     "order": "1",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "dei:DocumentType",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R2": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
     "longName": "001 - Statement - Consolidated Statements of Operations (Unaudited)",
     "shortName": "Consolidated Statements of Operations (Unaudited)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "2",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:CostOfRevenue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R3": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
     "longName": "002 - Statement - Consolidated Statements of Comprehensive Income (Loss) (Unaudited)",
     "shortName": "Consolidated Statements of Comprehensive Income (Loss) (Unaudited)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "3",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:ProfitLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R4": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
     "longName": "003 - Statement - Consolidated Balance Sheets (Current Period Unaudited)",
     "shortName": "Consolidated Balance Sheets (Current Period Unaudited)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "4",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:RestrictedCashCurrent",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R5": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
     "longName": "004 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)",
     "shortName": "Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "parenthetical",
     "menuCat": "Statements",
     "order": "5",
     "firstAnchor": null,
     "uniqueAnchor": null
    },
    "R6": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited",
     "longName": "005 - Statement - Consolidated Statements of Stockholders' Equity (Unaudited)",
     "shortName": "Consolidated Statements of Stockholders' Equity (Unaudited)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "6",
     "firstAnchor": {
      "contextRef": "i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember",
      "name": "us-gaap:StockholdersEquity",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember",
      "name": "us-gaap:NetIncomeLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R7": {
     "role": "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
     "longName": "006 - Statement - Consolidated Statements of Cash Flows (Unaudited)",
     "shortName": "Consolidated Statements of Cash Flows (Unaudited)",
     "isDefault": "false",
     "groupType": "statement",
     "subGroupType": "",
     "menuCat": "Statements",
     "order": "7",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ProfitLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R8": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
     "longName": "007 - Disclosure - Note 1 - Basis of Presentation",
     "shortName": "Note 1 - Basis of Presentation",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "8",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R9": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
     "longName": "008 - Disclosure - Note 2 - Business Segment Reporting",
     "shortName": "Note 2 - Business Segment Reporting",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "9",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R10": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
     "longName": "009 - Disclosure - Note 3 - Accounts Receivable",
     "shortName": "Note 3 - Accounts Receivable",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "10",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R11": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
     "longName": "010 - Disclosure - Note 4 - Revenue Recognition",
     "shortName": "Note 4 - Revenue Recognition",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "11",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R12": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
     "longName": "011 - Disclosure - Note 5 - Inventories",
     "shortName": "Note 5 - Inventories",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "12",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R13": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
     "longName": "012 - Disclosure - Note 6 - Income Taxes",
     "shortName": "Note 6 - Income Taxes",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "13",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R14": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
     "longName": "013 - Disclosure - Note 7 - Impairment of Long-lived Assets",
     "shortName": "Note 7 - Impairment of Long-lived Assets",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "14",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:AssetImpairmentChargesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:AssetImpairmentChargesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R15": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
     "longName": "014 - Disclosure - Note 8 - Stock-based Compensation",
     "shortName": "Note 8 - Stock-based Compensation",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "15",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R16": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share",
     "longName": "015 - Disclosure - Note 9 - Earnings Per Share",
     "shortName": "Note 9 - Earnings Per Share",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "16",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R17": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
     "longName": "016 - Disclosure - Note 10 - Debt",
     "shortName": "Note 10 - Debt",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "17",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R18": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
     "longName": "017 - Disclosure - Note 11 - Leases",
     "shortName": "Note 11 - Leases",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "18",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R19": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
     "longName": "018 - Disclosure - Note 12 - Restricted Cash",
     "shortName": "Note 12 - Restricted Cash",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "19",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:CashAndCashEquivalentsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:CashAndCashEquivalentsDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R20": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
     "longName": "019 - Disclosure - Note 13 - Fair Value",
     "shortName": "Note 13 - Fair Value",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "20",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R21": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
     "longName": "020 - Disclosure - Note 14 - Recent Accounting Pronouncements",
     "shortName": "Note 14 - Recent Accounting Pronouncements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "21",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R22": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
     "longName": "021 - Disclosure - Note 15 - Treasury Stock",
     "shortName": "Note 15 - Treasury Stock",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "22",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:TreasuryStockTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:TreasuryStockTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R23": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
     "longName": "022 - Disclosure - Note 16 - Noncontrolling Interest",
     "shortName": "Note 16 - Noncontrolling Interest",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "23",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:MinorityInterestDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:MinorityInterestDisclosureTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R24": {
     "role": "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements",
     "longName": "995445 - Disclosure - Insider Trading Arrangements",
     "shortName": "Insider Trading Arrangements",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "",
     "menuCat": "Notes",
     "order": "24",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ecd:MtrlTermsOfTrdArrTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ecd:MtrlTermsOfTrdArrTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R25": {
     "role": "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies",
     "longName": "995469 - Disclosure - Significant Accounting Policies (Policies)",
     "shortName": "Significant Accounting Policies (Policies)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "policies",
     "menuCat": "Policies",
     "order": "25",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R26": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
     "longName": "995470 - Disclosure - Note 4 - Revenue Recognition (Tables)",
     "shortName": "Note 4 - Revenue Recognition (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "26",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R27": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
     "longName": "995471 - Disclosure - Note 5 - Inventories (Tables)",
     "shortName": "Note 5 - Inventories (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "27",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R28": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
     "longName": "995472 - Disclosure - Note 7 - Impairment of Long-lived Assets (Tables)",
     "shortName": "Note 7 - Impairment of Long-lived Assets (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "28",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:AssetImpairmentChargesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:AssetImpairmentChargesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R29": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
     "longName": "995473 - Disclosure - Note 8 - Stock-based Compensation (Tables)",
     "shortName": "Note 8 - Stock-based Compensation (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "29",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R30": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables",
     "longName": "995474 - Disclosure - Note 9 - Earnings Per Share (Tables)",
     "shortName": "Note 9 - Earnings Per Share (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "30",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R31": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
     "longName": "995475 - Disclosure - Note 11 - Leases (Tables)",
     "shortName": "Note 11 - Leases (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "31",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R32": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
     "longName": "995476 - Disclosure - Note 12 - Restricted Cash (Tables)",
     "shortName": "Note 12 - Restricted Cash (Tables)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "tables",
     "menuCat": "Tables",
     "order": "32",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "div",
       "div",
       "us-gaap:CashAndCashEquivalentsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "div",
       "div",
       "us-gaap:CashAndCashEquivalentsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R33": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual",
     "longName": "995477 - Disclosure - Note 2 - Business Segment Reporting (Details Textual)",
     "shortName": "Note 2 - Business Segment Reporting (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "33",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NumberOfReportableSegments",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:NumberOfReportableSegments",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "p",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R34": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual",
     "longName": "995478 - Disclosure - Note 3 - Accounts Receivable (Details Textual)",
     "shortName": "Note 3 - Accounts Receivable (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "34",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:IncreaseDecreaseInAccountsReceivable",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember",
      "name": "ppih:NumberOfMajorCustomers",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "span",
       "p",
       "us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R35": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual",
     "longName": "995479 - Disclosure - Note 4 - Revenue Recognition (Details Textual)",
     "shortName": "Note 4 - Revenue Recognition (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "35",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:UnbilledReceivablesCurrent",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-4",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": null
    },
    "R36": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
     "longName": "995480 - Disclosure - Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)",
     "shortName": "Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "36",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "0",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R37": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
     "longName": "995481 - Disclosure - Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)",
     "shortName": "Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "37",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "ppih:CostsIncurredOnUncompletedContracts",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "ppih:CostsIncurredOnUncompletedContracts",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock",
       "us-gaap:RevenueFromContractWithCustomerTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R38": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details",
     "longName": "995482 - Disclosure - Note 5 - Inventories - Schedule of Inventory (Details)",
     "shortName": "Note 5 - Inventories - Schedule of Inventory (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "38",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:InventoryRawMaterials",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:InventoryRawMaterials",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R39": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual",
     "longName": "995483 - Disclosure - Note 6 - Income Taxes (Details Textual)",
     "shortName": "Note 6 - Income Taxes (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "39",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "2",
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "2",
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R40": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual",
     "longName": "995484 - Disclosure - Note 7 - Impairment of Long-lived Assets (Details Textual)",
     "shortName": "Note 7 - Impairment of Long-lived Assets (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "40",
     "firstAnchor": {
      "contextRef": "i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember",
      "name": "us-gaap:BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "1",
      "ancestors": [
       "p",
       "us-gaap:AssetImpairmentChargesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember",
      "name": "us-gaap:BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage",
      "unitRef": "Pure",
      "xsiNil": "false",
      "lang": null,
      "decimals": "1",
      "ancestors": [
       "p",
       "us-gaap:AssetImpairmentChargesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R41": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details",
     "longName": "995485 - Disclosure - Note 7 - Impairment of Long-lived Assets - Goodwill (Details)",
     "shortName": "Note 7 - Impairment of Long-lived Assets - Goodwill (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "41",
     "firstAnchor": {
      "contextRef": "i_2024-01-31",
      "name": "us-gaap:Goodwill",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:GoodwillForeignCurrencyTranslationGainLoss",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "us-gaap:AssetImpairmentChargesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R42": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
     "longName": "995486 - Disclosure - Note 8 - Stock-based Compensation (Details Textual)",
     "shortName": "Note 8 - Stock-based Compensation (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "42",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:CommonStockCapitalSharesReservedForFutureIssuance",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "INF",
      "ancestors": [
       "span",
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "span",
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R43": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
     "longName": "995487 - Disclosure - Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "shortName": "Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "43",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R44": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
     "longName": "995488 - Disclosure - Note 8 - Stock-based Compensation - Stock Option Activity (Details)",
     "shortName": "Note 8 - Stock-based Compensation - Stock Option Activity (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "44",
     "firstAnchor": {
      "contextRef": "i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R45": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
     "longName": "995489 - Disclosure - Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)",
     "shortName": "Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "45",
     "firstAnchor": {
      "contextRef": "i_2024-01-31_AwardTypeAxis-RestrictedStockMember",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-01-31_AwardTypeAxis-RestrictedStockMember",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R46": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
     "longName": "995490 - Disclosure - Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)",
     "shortName": "Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "46",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:WeightedAverageNumberOfSharesOutstandingBasic",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment",
      "unitRef": "Share",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R47": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
     "longName": "995491 - Disclosure - Note 10 - Debt (Details Textual)",
     "shortName": "Note 10 - Debt (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "47",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:DebtAndCapitalLeaseObligations",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:DebtAndCapitalLeaseObligations",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R48": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
     "longName": "995492 - Disclosure - Note 11 - Leases (Details Textual)",
     "shortName": "Note 11 - Leases (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "48",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:OperatingLeaseLiability",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:OperatingLeaseExpense",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-5",
      "ancestors": [
       "p",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R49": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
     "longName": "995493 - Disclosure - Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)",
     "shortName": "Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "49",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:FinanceLeaseLiabilityCurrent",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R50": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details",
     "longName": "995494 - Disclosure - Note 11 - Leases - Lease Costs (Details)",
     "shortName": "Note 11 - Leases - Lease Costs (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "50",
     "firstAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31",
      "name": "us-gaap:FinanceLeaseRightOfUseAssetAmortization",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R51": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
     "longName": "995495 - Disclosure - Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)",
     "shortName": "Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "51",
     "firstAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:FinanceLeasePrincipalPayments",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:SupplementalCashFlowInformationRelatedLeasesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-02-01_2024-07-31",
      "name": "us-gaap:FinanceLeaseInterestPaymentOnLiability",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:SupplementalCashFlowInformationRelatedLeasesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R52": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
     "longName": "995496 - Disclosure - Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)",
     "shortName": "Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "52",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1",
      "unitRef": null,
      "xsiNil": "false",
      "lang": "en-US",
      "decimals": null,
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R53": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
     "longName": "995497 - Disclosure - Note 11 - Leases - Maturities of Lease Liabilities (Details)",
     "shortName": "Note 11 - Leases - Maturities of Lease Liabilities (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "53",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "ppih:FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock",
       "ppih:LesseeOperatingAndFinanceLeasesTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R54": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
     "longName": "995498 - Disclosure - Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)",
     "shortName": "Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "54",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:RestrictedCashAndCashEquivalents",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock",
       "div",
       "div",
       "us-gaap:CashAndCashEquivalentsDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    },
    "R55": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual",
     "longName": "995499 - Disclosure - Note 15 - Treasury Stock (Details Textual)",
     "shortName": "Note 15 - Treasury Stock (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "55",
     "firstAnchor": {
      "contextRef": "i_2022-12-07",
      "name": "srt:StockRepurchaseProgramAuthorizedAmount1",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-6",
      "ancestors": [
       "p",
       "us-gaap:TreasuryStockTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     },
     "uniqueAnchor": {
      "contextRef": "i_2022-12-07",
      "name": "srt:StockRepurchaseProgramAuthorizedAmount1",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-6",
      "ancestors": [
       "p",
       "us-gaap:TreasuryStockTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true,
      "unique": true
     }
    },
    "R56": {
     "role": "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual",
     "longName": "995500 - Disclosure - Note 16 - Noncontrolling Interest (Details Textual)",
     "shortName": "Note 16 - Noncontrolling Interest (Details Textual)",
     "isDefault": "false",
     "groupType": "disclosure",
     "subGroupType": "details",
     "menuCat": "Details",
     "order": "56",
     "firstAnchor": {
      "contextRef": "i_2024-07-31",
      "name": "us-gaap:Assets",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-3",
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "first": true
     },
     "uniqueAnchor": {
      "contextRef": "d_2024-05-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember",
      "name": "us-gaap:NetIncomeLossAttributableToNoncontrollingInterest",
      "unitRef": "USD",
      "xsiNil": "false",
      "lang": null,
      "decimals": "-6",
      "ancestors": [
       "p",
       "div",
       "us-gaap:MinorityInterestDisclosureTextBlock",
       "body",
       "html"
      ],
      "reportCount": 1,
      "baseRef": "ppih20240731_10q.htm",
      "unique": true
     }
    }
   },
   "tag": {
    "ppih_AbuDhabiLandLeaseMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "AbuDhabiLandLeaseMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Abu Dhabi Land Lease [Member]",
        "documentation": "Represents information regarding land leased in Abu Dhabi."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountingPoliciesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Billing Status, Type [Axis]",
        "documentation": "Information by billing status of receivables."
       }
      }
     },
     "auth_ref": [
      "r68",
      "r74"
     ]
    },
    "us-gaap_AccountsPayableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountsPayableCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trade accounts payable",
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r55",
      "r656"
     ]
    },
    "us-gaap_AccountsReceivableMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountsReceivableMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounts Receivable [Member]",
        "documentation": "Due from customers or clients for goods or services that have been delivered or sold."
       }
      }
     },
     "auth_ref": [
      "r610"
     ]
    },
    "us-gaap_AccountsReceivableNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountsReceivableNet",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AccountsReceivableNet",
        "terseLabel": "Accounts Receivable, after Allowance for Credit Loss",
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business."
       }
      }
     },
     "auth_ref": [
      "r569",
      "r609",
      "r665",
      "r786",
      "r787"
     ]
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccountsReceivableNetCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trade accounts receivable, less allowance for credit losses of $713 at July 31, 2024 and $699 at January 31, 2024",
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current."
       }
      }
     },
     "auth_ref": [
      "r726"
     ]
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccruedIncomeTaxesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income taxes payable",
        "documentation": "Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations."
       }
      }
     },
     "auth_ref": [
      "r58",
      "r110"
     ]
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccruedLiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other accrued liabilities",
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r58"
     ]
    },
    "us-gaap_AccruedSalesCommissionCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccruedSalesCommissionCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commissions and management incentives payable",
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for sales commissions. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r58",
      "r617"
     ]
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
        "negatedLabel": "Accumulated depreciation and amortization",
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services."
       }
      }
     },
     "auth_ref": [
      "r33",
      "r154",
      "r508"
     ]
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accumulated other comprehensive loss",
        "documentation": "Amount, after tax, of accumulated increase (decrease) in equity from transaction and other event and circumstance from nonowner source."
       }
      }
     },
     "auth_ref": [
      "r19",
      "r20",
      "r78",
      "r160",
      "r504",
      "r534",
      "r538"
     ]
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "AOCI Attributable to Parent [Member]",
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r1",
      "r12",
      "r20",
      "r419",
      "r422",
      "r474",
      "r529",
      "r530",
      "r703",
      "r704",
      "r705",
      "r712",
      "r713",
      "r714",
      "r716"
     ]
    },
    "us-gaap_AdditionalPaidInCapital": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AdditionalPaidInCapital",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Additional paid-in capital",
        "documentation": "Amount of excess of issue price over par or stated value of stock and from other transaction involving stock or stockholder. Includes, but is not limited to, additional paid-in capital (APIC) for common and preferred stock."
       }
      }
     },
     "auth_ref": [
      "r69",
      "r656",
      "r820"
     ]
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AdditionalPaidInCapitalMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Additional Paid-in Capital [Member]",
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders."
       }
      }
     },
     "auth_ref": [
      "r549",
      "r712",
      "r713",
      "r714",
      "r716",
      "r759",
      "r821"
     ]
    },
    "ppih_AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Additional SOFR Adjustment Based on Interest Period [Member]",
        "documentation": "Information pertaining to SOFR adjustment based on the term of the interest period."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amount attributable to non-controlling interest",
        "documentation": "Amount of other increase (decrease) in additional paid in capital (APIC) resulting from reclassification to non-controlling interest."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stock-based compensation expense",
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r42",
      "r43",
      "r345"
     ]
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Adjustments to reconcile net income to net cash provided by operating activities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AllocatedShareBasedCompensationExpense",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Stock-based compensation expense",
        "label": "us-gaap_AllocatedShareBasedCompensationExpense",
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized."
       }
      }
     },
     "auth_ref": [
      "r374",
      "r379"
     ]
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AllowanceForDoubtfulAccountsReceivable",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AllowanceForDoubtfulAccountsReceivable",
        "terseLabel": "Accounts Receivable, Allowance for Credit Loss",
        "documentation": "Amount of allowance for credit loss on accounts receivable."
       }
      }
     },
     "auth_ref": [
      "r161",
      "r253",
      "r261",
      "r262",
      "r264",
      "r787"
     ]
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Allowance for doubtful accounts",
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current."
       }
      }
     },
     "auth_ref": [
      "r161",
      "r253",
      "r261"
     ]
    },
    "dei_AmendmentFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "AmendmentFlag",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amendment Flag",
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares (in shares)",
        "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented."
       }
      }
     },
     "auth_ref": [
      "r222"
     ]
    },
    "us-gaap_AssetImpairmentChargesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AssetImpairmentChargesTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Asset Impairment Charges [Text Block]",
        "documentation": "The entire disclosure for the details of the charge against earnings resulting from the aggregate write down of all assets from their carrying value to their fair value. Disclosure may also include a description of the impaired asset and facts and circumstances leading to the impairment, amount of the impairment loss and where the loss is located in the income statement, method(s) for determining fair value, and the segment in which the impaired asset is reported."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_Assets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "Assets",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_Assets",
        "terseLabel": "Assets",
        "totalLabel": "Total assets",
        "documentation": "Amount of asset recognized for present right to economic benefit."
       }
      }
     },
     "auth_ref": [
      "r108",
      "r119",
      "r157",
      "r184",
      "r226",
      "r232",
      "r241",
      "r244",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r412",
      "r416",
      "r440",
      "r498",
      "r574",
      "r624",
      "r625",
      "r656",
      "r672",
      "r750",
      "r751",
      "r775"
     ]
    },
    "us-gaap_AssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AssetsCurrent",
        "totalLabel": "Total current assets",
        "documentation": "Amount of asset recognized for present right to economic benefit, classified as current."
       }
      }
     },
     "auth_ref": [
      "r150",
      "r163",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r412",
      "r416",
      "r440",
      "r656",
      "r750",
      "r751",
      "r775"
     ]
    },
    "us-gaap_AssetsCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AssetsCurrentAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current assets"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AssetsNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AssetsNoncurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_Assets",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_AssetsNoncurrent",
        "totalLabel": "Total long-term assets",
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold or consumed after one year or beyond the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r412",
      "r416",
      "r440",
      "r750",
      "r751",
      "r775"
     ]
    },
    "us-gaap_AssetsNoncurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AssetsNoncurrentAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-term assets"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_AwardTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "AwardTypeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Award Type [Axis]",
        "documentation": "Information by type of award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r356",
      "r357",
      "r358",
      "r359",
      "r360",
      "r361",
      "r362",
      "r363",
      "r364",
      "r365",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373"
     ]
    },
    "us-gaap_BalanceSheetLocationAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BalanceSheetLocationAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position Location, Balance [Axis]",
        "documentation": "Information by location in statement of financial position where disaggregated cumulative balance has been reported."
       }
      }
     },
     "auth_ref": [
      "r281",
      "r789",
      "r790"
     ]
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BalanceSheetLocationDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position Location, Balance [Domain]",
        "documentation": "Location in statement of financial position where disaggregated cumulative balance has been reported."
       }
      }
     },
     "auth_ref": [
      "r50",
      "r51",
      "r281",
      "r789",
      "r790"
     ]
    },
    "us-gaap_BaseRateMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BaseRateMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Base Rate [Member]",
        "documentation": "Minimum rate investor will accept."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_BillingsToDate": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "BillingsToDate",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Less billings to date",
        "documentation": "Billings to date related to percentage of completion"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BusinessAcquisitionAcquireeDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Acquisition, Acquiree [Domain]",
        "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree."
       }
      }
     },
     "auth_ref": [
      "r270",
      "r271",
      "r272",
      "r273",
      "r274",
      "r408",
      "r640",
      "r641"
     ]
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BusinessAcquisitionAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Acquisition [Axis]",
        "documentation": "Information by business combination or series of individually immaterial business combinations."
       }
      }
     },
     "auth_ref": [
      "r44",
      "r45",
      "r270",
      "r271",
      "r272",
      "r273",
      "r274",
      "r408",
      "r640",
      "r641"
     ]
    },
    "us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage",
        "terseLabel": "Business Combination, Step Acquisition, Equity Interest in Acquiree, Including Subsequent Acquisition, Percentage",
        "documentation": "Percentage of voting equity interests acquired in a business combination achieved in stages, including equity interests in the acquiree held by the acquirer immediately before the acquisition date and acquired at the acquisition date."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_CanadianMortgageNoteMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CanadianMortgageNoteMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Canadian Mortgage Note [Member]",
        "documentation": "Represents information pertaining to a mortgage note from a bank in Canada, secured by a Canadian manufacturing facility."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
       "weight": 1.0,
       "order": 1.0
      },
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and cash equivalents",
        "terseLabel": "Cash and cash equivalents",
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r152",
      "r615"
     ]
    },
    "us-gaap_CashAndCashEquivalentsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CashAndCashEquivalentsDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and Cash Equivalents Disclosure [Text Block]",
        "documentation": "The entire disclosure for cash and cash equivalent footnotes, which may include the types of deposits and money market instruments, applicable carrying amounts, restricted amounts and compensating balance arrangements. Cash and equivalents include: (1) currency on hand (2) demand deposits with banks or financial institutions (3) other kinds of accounts that have the general characteristics of demand deposits (4) short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Generally, only investments maturing within three months from the date of acquisition qualify."
       }
      }
     },
     "auth_ref": [
      "r152",
      "r502"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
        "totalLabel": "Cash, cash equivalents and restricted cash shown in the statement of cash flows",
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r89",
      "r182"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
        "periodStartLabel": "Cash, cash equivalents and restricted cash - beginning of period",
        "periodEndLabel": "Cash, cash equivalents and restricted cash - end of period",
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r89",
      "r182"
     ]
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
        "totalLabel": "Net increase in cash, cash equivalents and restricted cash",
        "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r0",
      "r89"
     ]
    },
    "ppih_CentralBankOfEqyptCbeRateMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CentralBankOfEqyptCbeRateMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Central Bank of Eqypt (CBE) Rate [Member]",
        "documentation": "Represents CBE rate."
       }
      }
     },
     "auth_ref": []
    },
    "dei_CityAreaCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "CityAreaCode",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "City Area Code",
        "documentation": "Area code of city"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CommitmentsAndContingencies": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommitmentsAndContingencies",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and contingencies",
        "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur."
       }
      }
     },
     "auth_ref": [
      "r64",
      "r112",
      "r501",
      "r560"
     ]
    },
    "us-gaap_CommonStockCapitalSharesReservedForFutureIssuance": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockCapitalSharesReservedForFutureIssuance",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_CommonStockCapitalSharesReservedForFutureIssuance",
        "terseLabel": "Common Stock, Capital Shares Reserved for Future Issuance (in shares)",
        "documentation": "Aggregate number of common shares reserved for future issuance."
       }
      }
     },
     "auth_ref": [
      "r67"
     ]
    },
    "ppih_CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock issued under stock plans, net of shares used for tax withholding",
        "documentation": "The amount of common stock issued under stock plans, net of shares used for tax withholding."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CommonStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common Stock [Member]",
        "documentation": "Stock that is subordinate to all other stock of the issuer."
       }
      }
     },
     "auth_ref": [
      "r662",
      "r663",
      "r664",
      "r666",
      "r667",
      "r668",
      "r669",
      "r712",
      "r713",
      "r716",
      "r759",
      "r819",
      "r821"
     ]
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockParOrStatedValuePerShare",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, par value (in dollars per share)",
        "documentation": "Face amount or stated value per share of common stock."
       }
      }
     },
     "auth_ref": [
      "r67"
     ]
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockSharesAuthorized",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, authorized (in shares)",
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws."
       }
      }
     },
     "auth_ref": [
      "r67",
      "r561"
     ]
    },
    "us-gaap_CommonStockSharesIssued": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockSharesIssued",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, issued (in shares)",
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury."
       }
      }
     },
     "auth_ref": [
      "r67"
     ]
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockSharesOutstanding",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, outstanding (in shares)",
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r67",
      "r561",
      "r580",
      "r821",
      "r822"
     ]
    },
    "us-gaap_CommonStockValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CommonStockValue",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common stock, $.01 par value, authorized 50,000 shares; 7,978 issued and outstanding at July 31, 2024 and 8,017 at January 31, 2024",
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity."
       }
      }
     },
     "auth_ref": [
      "r67",
      "r503",
      "r656"
     ]
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ComprehensiveIncomeNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ComprehensiveIncomeNetOfTax",
        "totalLabel": "Total comprehensive income (loss) attributable to common stock",
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r21",
      "r165",
      "r167",
      "r173",
      "r494",
      "r515",
      "r517"
     ]
    },
    "us-gaap_ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Less: Comprehensive income attributable to non-controlling interests",
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income (loss) and other comprehensive income (loss), attributable to noncontrolling interests. Excludes changes in equity resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r3",
      "r47",
      "r49",
      "r165",
      "r167",
      "r172",
      "r493",
      "r515",
      "r516"
     ]
    },
    "us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest",
        "totalLabel": "Comprehensive income (loss)",
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income. Excludes changes in equity resulting from investments by owners and distributions to owners."
       }
      }
     },
     "auth_ref": [
      "r49",
      "r105",
      "r165",
      "r167",
      "r171",
      "r492",
      "r515"
     ]
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ConcentrationRiskBenchmarkDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Benchmark [Domain]",
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage."
       }
      }
     },
     "auth_ref": [
      "r31",
      "r32",
      "r52",
      "r53",
      "r250",
      "r610"
     ]
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Benchmark [Axis]",
        "documentation": "Information by benchmark of concentration risk."
       }
      }
     },
     "auth_ref": [
      "r31",
      "r32",
      "r52",
      "r53",
      "r250",
      "r540",
      "r610"
     ]
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ConcentrationRiskByTypeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Type [Axis]",
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender."
       }
      }
     },
     "auth_ref": [
      "r31",
      "r32",
      "r52",
      "r53",
      "r250",
      "r610",
      "r688"
     ]
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ConcentrationRiskTypeDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Concentration Risk Type [Domain]",
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration."
       }
      }
     },
     "auth_ref": [
      "r31",
      "r32",
      "r52",
      "r53",
      "r250",
      "r610"
     ]
    },
    "srt_ConsolidatedEntitiesAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "ConsolidatedEntitiesAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidated Entities [Axis]",
        "documentation": "Information by consolidated entity or group of entities."
       }
      }
     },
     "auth_ref": [
      "r129",
      "r141",
      "r188",
      "r412",
      "r413",
      "r416",
      "r417",
      "r481",
      "r611",
      "r693",
      "r694",
      "r695",
      "r749",
      "r752",
      "r753"
     ]
    },
    "srt_ConsolidatedEntitiesDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "ConsolidatedEntitiesDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidated Entities [Domain]",
        "documentation": "Entity or group of entities consolidated into reporting entity."
       }
      }
     },
     "auth_ref": [
      "r129",
      "r141",
      "r188",
      "r412",
      "r413",
      "r416",
      "r417",
      "r481",
      "r611",
      "r693",
      "r694",
      "r695",
      "r749",
      "r752",
      "r753"
     ]
    },
    "us-gaap_ContractWithCustomerAssetNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ContractWithCustomerAssetNet",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": "ppih_CostsInExcessOfBillingsNet",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ContractWithCustomerAssetNet",
        "terseLabel": "Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts",
        "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time."
       }
      }
     },
     "auth_ref": [
      "r325",
      "r327",
      "r338"
     ]
    },
    "us-gaap_ContractWithCustomerAssetNetCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ContractWithCustomerAssetNetCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Costs and estimated earnings in excess of billings on uncompleted contracts",
        "documentation": "Amount, after allowance for credit loss, of right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time, classified as current."
       }
      }
     },
     "auth_ref": [
      "r325",
      "r327",
      "r338"
     ]
    },
    "us-gaap_ContractWithCustomerLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ContractWithCustomerLiability",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": "ppih_CostsInExcessOfBillingsNet",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ContractWithCustomerLiability",
        "negatedTerseLabel": "Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable."
       }
      }
     },
     "auth_ref": [
      "r325",
      "r326",
      "r338"
     ]
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ContractWithCustomerLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Billings in excess of costs and estimated earnings on uncompleted contracts",
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current."
       }
      }
     },
     "auth_ref": [
      "r325",
      "r326",
      "r338"
     ]
    },
    "us-gaap_CostOfRevenue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CostOfRevenue",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cost of sales",
        "documentation": "The aggregate cost of goods produced and sold and services rendered during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r81",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r440",
      "r624",
      "r750"
     ]
    },
    "ppih_CostsInExcessOfBillingsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CostsInExcessOfBillingsNet",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Costs in excess of billings, net",
        "totalLabel": "Costs in excess of billings, net",
        "documentation": "Costs in excess of billings, net related to percentage of completion"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod": {
     "xbrltype": "durationItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod",
        "terseLabel": "Costs Incurred for Uncompleted Contracts, Anticipated Collection Period (Year)",
        "documentation": "Represents the duration of time within which costs incurred for uncompleted contracts are anticipated to be collected."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_CostsIncurredOnUncompletedContracts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CostsIncurredOnUncompletedContracts",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": "ppih_EarnedRevenue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Costs incurred on uncompleted contracts",
        "documentation": "Costs incurred on uncompleted contracts related to percentage of completion"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CreditFacilityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CreditFacilityAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Credit Facility [Axis]",
        "documentation": "Information by type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing."
       }
      }
     },
     "auth_ref": [
      "r287",
      "r747"
     ]
    },
    "us-gaap_CreditFacilityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CreditFacilityDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Credit Facility [Domain]",
        "documentation": "Type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing."
       }
      }
     },
     "auth_ref": [
      "r287",
      "r747",
      "r748"
     ]
    },
    "dei_CurrentFiscalYearEndDate": {
     "xbrltype": "gMonthDayItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "CurrentFiscalYearEndDate",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Fiscal Year End Date",
        "documentation": "End date of current fiscal year in the format --MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "CustomerConcentrationRiskMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customer Concentration Risk [Member]",
        "documentation": "Reflects the percentage that revenues in the period from one or more significant customers is to net revenues, as defined by the entity, such as total net revenues, product line revenues, segment revenues. The risk is the materially adverse effects of loss of a significant customer."
       }
      }
     },
     "auth_ref": [
      "r92",
      "r250"
     ]
    },
    "ppih_CustomerDepositsCurrent1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "CustomerDepositsCurrent1",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 8.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Customers' deposits",
        "documentation": "The current portion of customer deposits."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DebtAndCapitalLeaseObligations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtAndCapitalLeaseObligations",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtAndCapitalLeaseObligations",
        "terseLabel": "Debt and Lease Obligation",
        "documentation": "Amount of short-term and long-term debt and lease obligation."
       }
      }
     },
     "auth_ref": [
      "r109",
      "r111"
     ]
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Disclosure [Text Block]",
        "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants."
       }
      }
     },
     "auth_ref": [
      "r96",
      "r183",
      "r276",
      "r277",
      "r278",
      "r279",
      "r280",
      "r286",
      "r287",
      "r297",
      "r303",
      "r304",
      "r305",
      "r306",
      "r307",
      "r308",
      "r313",
      "r320",
      "r321",
      "r322",
      "r448"
     ]
    },
    "us-gaap_DebtInstrumentAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Instrument [Axis]",
        "documentation": "Information by type of debt instrument, including, but not limited to, draws against credit facilities."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r57",
      "r58",
      "r109",
      "r111",
      "r188",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r304",
      "r309",
      "r310",
      "r311",
      "r312",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r632",
      "r633",
      "r634",
      "r635",
      "r636",
      "r654",
      "r710",
      "r741",
      "r742",
      "r743",
      "r767",
      "r768"
     ]
    },
    "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentBasisSpreadOnVariableRate1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1",
        "terseLabel": "Debt Instrument, Basis Spread on Variable Rate",
        "documentation": "Percentage points added to the reference rate to compute the variable rate on the debt instrument."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DebtInstrumentFaceAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentFaceAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentFaceAmount",
        "terseLabel": "Debt Instrument, Face Amount",
        "documentation": "Face (par) amount of debt instrument at time of issuance."
       }
      }
     },
     "auth_ref": [
      "r298",
      "r448",
      "r449",
      "r633",
      "r634",
      "r654"
     ]
    },
    "us-gaap_DebtInstrumentInterestRateEffectivePercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentInterestRateEffectivePercentage",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentInterestRateEffectivePercentage",
        "terseLabel": "Debt Instrument, Interest Rate, Effective Percentage",
        "documentation": "Effective interest rate for the funds borrowed under the debt agreement considering interest compounding and original issue discount or premium."
       }
      }
     },
     "auth_ref": [
      "r60",
      "r323",
      "r448",
      "r449",
      "r654"
     ]
    },
    "us-gaap_DebtInstrumentInterestRateStatedPercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentInterestRateStatedPercentage",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentInterestRateStatedPercentage",
        "terseLabel": "Debt Instrument, Interest Rate, Stated Percentage",
        "documentation": "Contractual interest rate for funds borrowed, under the debt agreement."
       }
      }
     },
     "auth_ref": [
      "r60",
      "r299"
     ]
    },
    "us-gaap_DebtInstrumentMaturityDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentMaturityDate",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentMaturityDate",
        "terseLabel": "Debt Instrument, Maturity Date",
        "documentation": "Date when the debt instrument is scheduled to be fully repaid, in YYYY-MM-DD format."
       }
      }
     },
     "auth_ref": [
      "r158",
      "r632",
      "r762",
      "r763"
     ]
    },
    "us-gaap_DebtInstrumentNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentNameDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Debt Instrument, Name [Domain]",
        "documentation": "The name for the particular debt instrument or borrowing that distinguishes it from other debt instruments or borrowings, including draws against credit facilities."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r188",
      "r298",
      "r299",
      "r300",
      "r301",
      "r302",
      "r304",
      "r309",
      "r310",
      "r311",
      "r312",
      "r314",
      "r315",
      "r316",
      "r317",
      "r318",
      "r319",
      "r632",
      "r633",
      "r634",
      "r635",
      "r636",
      "r654",
      "r710",
      "r741",
      "r742",
      "r743",
      "r767",
      "r768"
     ]
    },
    "us-gaap_DebtInstrumentTerm": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DebtInstrumentTerm",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DebtInstrumentTerm",
        "terseLabel": "Debt Instrument, Term (Year)",
        "documentation": "Period of time between issuance and maturity of debt instrument, in PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_DecreaseInOperatingLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "DecreaseInOperatingLeaseLiabilityCurrent",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_DecreaseInOperatingLeaseLiabilityCurrent",
        "terseLabel": "Decrease in Operating Lease Liability, Current",
        "documentation": "The amount of decrease in the current portion of operating lease liability during the reporting period."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_DecreaseInOperatingLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "DecreaseInOperatingLeaseLiabilityNoncurrent",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_DecreaseInOperatingLeaseLiabilityNoncurrent",
        "terseLabel": "Decrease in Operating Lease Liability, Noncurrent",
        "documentation": "Amount of decrease in the non-current portion of the operating lease liability as of the reporting period."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_DecreaseInOperatingLeaseRightofuseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "DecreaseInOperatingLeaseRightofuseAsset",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_DecreaseInOperatingLeaseRightofuseAsset",
        "terseLabel": "Decrease in Operating Lease Right-of-use Asset",
        "documentation": "The amount of decrease in the operating lease right-of-use asset as of the reporting period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DeferredCompensationLiabilityClassifiedNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred compensation liabilities",
        "documentation": "Aggregate carrying value as of the balance sheet date of the liabilities for all deferred compensation arrangements payable beyond one year (or the operating cycle, if longer)."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DeferredFinanceCostsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DeferredFinanceCostsNet",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DeferredFinanceCostsNet",
        "terseLabel": "Debt Issuance Costs, Net",
        "documentation": "Amount, after accumulated amortization, of debt issuance costs. Includes, but is not limited to, legal, accounting, underwriting, printing, and registration costs."
       }
      }
     },
     "auth_ref": [
      "r755",
      "r766",
      "r767",
      "r768"
     ]
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DeferredIncomeTaxAssetsNet",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsNoncurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Deferred tax assets",
        "label": "us-gaap_DeferredIncomeTaxAssetsNet",
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r383",
      "r384"
     ]
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred tax liabilities",
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting."
       }
      }
     },
     "auth_ref": [
      "r383",
      "r384",
      "r499"
     ]
    },
    "us-gaap_DeferredIncomeTaxesAndTaxCredits": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DeferredIncomeTaxesAndTaxCredits",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred tax expense",
        "documentation": "Amount of deferred income tax expense (benefit) and income tax credits."
       }
      }
     },
     "auth_ref": [
      "r91"
     ]
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DepreciationDepletionAndAmortization",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DepreciationDepletionAndAmortization",
        "terseLabel": "Depreciation and amortization",
        "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets."
       }
      }
     },
     "auth_ref": [
      "r6",
      "r226",
      "r235",
      "r244",
      "r624",
      "r625"
     ]
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DisaggregationOfRevenueTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Disaggregation of Revenue [Table Text Block]",
        "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor."
       }
      }
     },
     "auth_ref": [
      "r757"
     ]
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement [Text Block]",
        "documentation": "The entire disclosure for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r344",
      "r347",
      "r375",
      "r376",
      "r378",
      "r643"
     ]
    },
    "us-gaap_DisclosureTextBlockAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DisclosureTextBlockAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DisclosureTextBlockAbstract",
        "terseLabel": "Notes to Financial Statements"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DisposalGroupIncludingDiscontinuedOperationConsideration",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DisposalGroupIncludingDiscontinuedOperationConsideration",
        "terseLabel": "Disposal Group, Including Discontinued Operation, Consideration",
        "documentation": "Amount of consideration received or receivable for the disposal of assets and liabilities, including discontinued operation."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_DisposalGroupsIncludingDiscontinuedOperationsNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "DisposalGroupsIncludingDiscontinuedOperationsNameDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Disposal Group Name [Domain]",
        "documentation": "Name of disposal group."
       }
      }
     },
     "auth_ref": [
      "r640",
      "r641"
     ]
    },
    "dei_DocumentFiscalPeriodFocus": {
     "xbrltype": "fiscalPeriodItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentFiscalPeriodFocus",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Period Focus",
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3. 1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentFiscalYearFocus": {
     "xbrltype": "gYearItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentFiscalYearFocus",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Fiscal Year Focus",
        "documentation": "This is focus fiscal year of the document report in YYYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentInformationLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentInformationLineItems",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Information [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentInformationTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentInformationTable",
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Information [Table]",
        "documentation": "Container to support the formal attachment of each official or unofficial, public or private document as part of a submission package."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentPeriodEndDate": {
     "xbrltype": "dateItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentPeriodEndDate",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Period End Date",
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period. The format of the date is YYYY-MM-DD."
       }
      }
     },
     "auth_ref": []
    },
    "dei_DocumentQuarterlyReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentQuarterlyReport",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Quarterly Report",
        "documentation": "Boolean flag that is true only for a form used as an quarterly report."
       }
      }
     },
     "auth_ref": [
      "r676"
     ]
    },
    "dei_DocumentTransitionReport": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentTransitionReport",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Transition Report",
        "documentation": "Boolean flag that is true only for a form used as a transition report."
       }
      }
     },
     "auth_ref": [
      "r677"
     ]
    },
    "dei_DocumentType": {
     "xbrltype": "submissionTypeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "DocumentType",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Document Type",
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_EIBORMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "EIBORMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "EIBOR [Member]",
        "documentation": "Represents information pertaining to the Emirates Inter Bank Offered Rate."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_EarnedRevenue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "EarnedRevenue",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_EarnedRevenue",
        "totalLabel": "Earned revenue",
        "documentation": "Amount of earned revenue."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EarningsPerShareAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings (loss) per share attributable to common stock"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_EarningsPerShareBasic": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EarningsPerShareBasic",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Basic (in dollars per share)",
        "label": "us-gaap_EarningsPerShareBasic",
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r174",
      "r198",
      "r199",
      "r201",
      "r202",
      "r203",
      "r205",
      "r212",
      "r214",
      "r219",
      "r220",
      "r221",
      "r225",
      "r406",
      "r410",
      "r428",
      "r429",
      "r495",
      "r518",
      "r618"
     ]
    },
    "us-gaap_EarningsPerShareDiluted": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EarningsPerShareDiluted",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Diluted (in dollars per share)",
        "label": "us-gaap_EarningsPerShareDiluted",
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period."
       }
      }
     },
     "auth_ref": [
      "r174",
      "r198",
      "r199",
      "r201",
      "r202",
      "r203",
      "r205",
      "r214",
      "r219",
      "r220",
      "r221",
      "r225",
      "r406",
      "r410",
      "r428",
      "r429",
      "r495",
      "r518",
      "r618"
     ]
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EarningsPerShareTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share [Text Block]",
        "documentation": "The entire disclosure for earnings per share."
       }
      }
     },
     "auth_ref": [
      "r211",
      "r222",
      "r223",
      "r224"
     ]
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Effect of exchange rate changes on cash, cash equivalents and restricted cash",
        "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies. Excludes amounts for disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r441"
     ]
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
        "terseLabel": "Effective Income Tax Rate Reconciliation, Percent",
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations."
       }
      }
     },
     "auth_ref": [
      "r386",
      "r644"
     ]
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued compensation and payroll taxes",
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer)."
       }
      }
     },
     "auth_ref": [
      "r58"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
        "terseLabel": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount",
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r377"
     ]
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
        "terseLabel": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)",
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r377"
     ]
    },
    "us-gaap_EmployeeStockOptionMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EmployeeStockOptionMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement, Option [Member]",
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressAddressLine1": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityAddressAddressLine1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Address Line One",
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressCityOrTown": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityAddressCityOrTown",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, City or Town",
        "documentation": "Name of the City or Town"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressPostalZipCode": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityAddressPostalZipCode",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, Postal Zip Code",
        "documentation": "Code for the postal or zip code"
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityAddressStateOrProvince": {
     "xbrltype": "stateOrProvinceItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityAddressStateOrProvince",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Address, State or Province",
        "documentation": "Name of the state or province."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCentralIndexKey": {
     "xbrltype": "centralIndexKeyItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityCentralIndexKey",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Central Index Key",
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityCommonStockSharesOutstanding",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Common Stock, Shares Outstanding",
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityCurrentReportingStatus": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityCurrentReportingStatus",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Current Reporting Status",
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information",
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables",
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity [Domain]",
        "documentation": "All the names of the entities being reported upon in a document. Any legal structure used to conduct activities or to hold assets. Some examples of such structures are corporations, partnerships, limited liability companies, grantor trusts, and other trusts. This item does not include business and geographical segments which are included in the geographical or business segments domains."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityEmergingGrowthCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityEmergingGrowthCompany",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Emerging Growth Company",
        "documentation": "Indicate if registrant meets the emerging growth company criteria."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntityFileNumber": {
     "xbrltype": "fileNumberItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityFileNumber",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity File Number",
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityFilerCategory": {
     "xbrltype": "filerCategoryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityFilerCategory",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Filer Category",
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntityIncorporationStateCountryCode": {
     "xbrltype": "edgarStateCountryItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityIncorporationStateCountryCode",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Incorporation, State or Country Code",
        "documentation": "Two-character EDGAR code representing the state or country of incorporation."
       }
      }
     },
     "auth_ref": []
    },
    "dei_EntityInteractiveDataCurrent": {
     "xbrltype": "yesNoItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityInteractiveDataCurrent",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Interactive Data Current",
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files)."
       }
      }
     },
     "auth_ref": [
      "r680"
     ]
    },
    "dei_EntityRegistrantName": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityRegistrantName",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Registrant Name",
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntityShellCompany": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityShellCompany",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Shell Company",
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntitySmallBusiness": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntitySmallBusiness",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Small Business",
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC)."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "dei_EntityTaxIdentificationNumber": {
     "xbrltype": "employerIdItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "EntityTaxIdentificationNumber",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Entity Tax Identification Number",
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS."
       }
      }
     },
     "auth_ref": [
      "r674"
     ]
    },
    "us-gaap_EquityComponentDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "EquityComponentDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity Component [Domain]",
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r146",
      "r168",
      "r169",
      "r170",
      "r189",
      "r190",
      "r191",
      "r195",
      "r203",
      "r206",
      "r208",
      "r227",
      "r255",
      "r260",
      "r275",
      "r324",
      "r394",
      "r395",
      "r401",
      "r402",
      "r403",
      "r407",
      "r409",
      "r410",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r424",
      "r427",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r451",
      "r453",
      "r474",
      "r514",
      "r529",
      "r530",
      "r531",
      "r549",
      "r599"
     ]
    },
    "ppih_EstimatedEarnings": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "EstimatedEarnings",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
       "parentTag": "ppih_EarnedRevenue",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Estimated earnings",
        "documentation": "Estimated earnings related to percentage of completion"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FairValueDisclosuresTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Disclosures [Text Block]",
        "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information."
       }
      }
     },
     "auth_ref": [
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r438",
      "r439",
      "r489",
      "r647",
      "r651"
     ]
    },
    "ppih_FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance and Operating Lease, Liability, Maturity [Table Text Block]",
        "documentation": "Tabular disclosure of finance and operating lease liability maturity."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FinanceLeaseInterestExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseInterestExpense",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Interest on lease liabilities",
        "documentation": "Amount of interest expense on finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r456",
      "r461",
      "r655"
     ]
    },
    "us-gaap_FinanceLeaseInterestPaymentOnLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseInterestPaymentOnLiability",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating cash outflows from finance leases",
        "documentation": "Amount of interest paid on finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r458",
      "r465"
     ]
    },
    "us-gaap_FinanceLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Total lease liabilities, finance leases",
        "terseLabel": "Finance Lease, Liability",
        "totalLabel": "Total finance lease liabilities",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease."
       }
      }
     },
     "auth_ref": [
      "r455",
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_FinanceLeaseLiability",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance lease liability short-term",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as current."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_FinanceLeaseLiability",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance lease liability long-term",
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDue",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
        "totalLabel": "Total lease payments, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for finance lease."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueAfterYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueAfterYearFive",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Thereafter, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the year ended January 31, 2026, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFive",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the year ended January 31, 2030, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearFour",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the year ended January 31, 2029, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearThree",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the year ended January 31, 2028, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsDueYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsDueYearTwo",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the year ended January 31, 2027, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_FinanceLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "For the six months ending January 31, 2025, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for finance lease to be paid in remainder of current fiscal year."
       }
      }
     },
     "auth_ref": [
      "r773"
     ]
    },
    "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseLiabilityUndiscountedExcessAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Less: amount representing interest, finance leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for finance lease."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "ppih_FinanceLeaseObligationsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "FinanceLeaseObligationsMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance Lease Obligations [Member]",
        "documentation": "Represents finance lease obligation."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FinanceLeasePrincipalPayments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeasePrincipalPayments",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financing cash outflows from finance leases",
        "negatedLabel": "Payments on finance lease obligations",
        "documentation": "Amount of cash outflow for principal payment on finance lease."
       }
      }
     },
     "auth_ref": [
      "r457",
      "r465"
     ]
    },
    "us-gaap_FinanceLeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseRightOfUseAsset",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_FinanceLeaseRightOfUseAsset",
        "terseLabel": "Finance Lease, Right-of-Use Asset, after Accumulated Amortization",
        "documentation": "Amount, after accumulated amortization, of right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": [
      "r454"
     ]
    },
    "us-gaap_FinanceLeaseRightOfUseAssetAmortization": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseRightOfUseAssetAmortization",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Amortization of ROU assets",
        "documentation": "Amount of amortization expense attributable to right-of-use asset from finance lease."
       }
      }
     },
     "auth_ref": [
      "r456",
      "r461",
      "r655"
     ]
    },
    "us-gaap_FinanceLeaseWeightedAverageDiscountRatePercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseWeightedAverageDiscountRatePercent",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance leases",
        "documentation": "Weighted average discount rate for finance lease calculated at point in time."
       }
      }
     },
     "auth_ref": [
      "r468",
      "r655"
     ]
    },
    "us-gaap_FinanceLeaseWeightedAverageRemainingLeaseTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinanceLeaseWeightedAverageRemainingLeaseTerm1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance leases (Year)",
        "documentation": "Weighted average remaining lease term for finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r467",
      "r655"
     ]
    },
    "ppih_FinanceLeasesAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "FinanceLeasesAssetsMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finance Leases Assets [Member]",
        "documentation": "Represents information pertaining to finance leases assets."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_FinancingReceivablesEqualToGreaterThan90DaysPastDueMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinancingReceivablesEqualToGreaterThan90DaysPastDueMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financial Asset, Equal to or Greater than 90 Days Past Due [Member]",
        "documentation": "Financial asset equal to or greater than 90 days past due."
       }
      }
     },
     "auth_ref": [
      "r630"
     ]
    },
    "us-gaap_FinancingReceivablesPeriodPastDueAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinancingReceivablesPeriodPastDueAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financial Asset, Aging [Axis]",
        "documentation": "Information by period in which financial asset is past due or not past due."
       }
      }
     },
     "auth_ref": [
      "r120",
      "r265",
      "r630"
     ]
    },
    "us-gaap_FinancingReceivablesPeriodPastDueDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "FinancingReceivablesPeriodPastDueDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financial Asset, Aging [Domain]",
        "documentation": "Period in which financial asset is past due or not past due. For past due, element name and standard label in Financial Asset, [numeric lower end] to [numeric higher end] [date measure] Past Due [Member] or Financial Asset, Greater than [low end numeric value] [date measure] Past Due [Member] or Financial Asset, Less than [high end numeric value] [date measure] Past Due [Member] formats."
       }
      }
     },
     "auth_ref": [
      "r120",
      "r265",
      "r630"
     ]
    },
    "ppih_ForeignRevolvingLinesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "ForeignRevolvingLinesMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign Revolving Lines [Member]",
        "documentation": "Represents information pertaining to foreign revolving credit facilities."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_GainLossOnDispositionOfAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "GainLossOnDispositionOfAssets",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_GainLossOnDispositionOfAssets",
        "negatedLabel": "Gain (loss) from disposal of fixed assets",
        "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property."
       }
      }
     },
     "auth_ref": [
      "r708",
      "r739",
      "r740"
     ]
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "GeneralAndAdministrativeExpense",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "General and administrative expenses",
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line."
       }
      }
     },
     "auth_ref": [
      "r83",
      "r584"
     ]
    },
    "us-gaap_Goodwill": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "Goodwill",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsNoncurrent",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill",
        "periodStartLabel": "Goodwill",
        "periodEndLabel": "Goodwill",
        "documentation": "Amount, after accumulated impairment loss, of asset representing future economic benefit arising from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r155",
      "r268",
      "r490",
      "r625",
      "r631",
      "r649",
      "r656",
      "r729",
      "r736"
     ]
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "GoodwillForeignCurrencyTranslationGainLoss",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill, foreign exchange change effect",
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) asset representing future economic benefit from other asset acquired in business combination or from joint venture formation or both, that is not individually identified and separately recognized."
       }
      }
     },
     "auth_ref": [
      "r269"
     ]
    },
    "us-gaap_GrossProfit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "GrossProfit",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_GrossProfit",
        "totalLabel": "Gross profit",
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity."
       }
      }
     },
     "auth_ref": [
      "r79",
      "r81",
      "r118",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r440",
      "r620",
      "r624",
      "r718",
      "r720",
      "r721",
      "r722",
      "r723",
      "r750"
     ]
    },
    "ppih_GulfInsulationGroupMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "GulfInsulationGroupMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Gulf Insulation Group [Member]",
        "documentation": "Represents Gulf Insulation Group."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_ProfitLoss",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
        "totalLabel": "Income before income taxes",
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r80",
      "r114",
      "r118",
      "r496",
      "r510",
      "r620",
      "r624",
      "r718",
      "r720",
      "r721",
      "r722",
      "r723"
     ]
    },
    "us-gaap_IncomeStatementAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeStatementAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Disposal Group Name [Axis]",
        "documentation": "Information by name of disposal group."
       }
      }
     },
     "auth_ref": [
      "r640",
      "r641"
     ]
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeTaxDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Disclosure [Text Block]",
        "documentation": "The entire disclosure for income tax."
       }
      }
     },
     "auth_ref": [
      "r185",
      "r381",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390",
      "r391",
      "r396",
      "r398",
      "r399",
      "r400",
      "r547",
      "r644"
     ]
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeTaxExpenseBenefit",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_ProfitLoss",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income tax expense",
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations."
       }
      }
     },
     "auth_ref": [
      "r125",
      "r126",
      "r207",
      "r208",
      "r226",
      "r236",
      "r244",
      "r385",
      "r386",
      "r397",
      "r519",
      "r644"
     ]
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncomeTaxesPaidNet",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash income taxes paid",
        "documentation": "Amount, after refund, of cash paid to foreign, federal, state, and local jurisdictions as income tax."
       }
      }
     },
     "auth_ref": [
      "r26",
      "r181",
      "r392",
      "r393"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInAccountsAndOtherReceivables",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccountsAndOtherReceivables",
        "negatedLabel": "Unbilled accounts receivable",
        "documentation": "The increase (decrease) during the reporting period in the amount due from customers for the credit sale of goods and services; includes accounts receivable and other types of receivables."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInAccountsPayable",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 8.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccountsPayable",
        "terseLabel": "Accounts payable",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 11.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInAccountsReceivable",
        "terseLabel": "Increase (Decrease) in Accounts Receivable",
        "negatedTerseLabel": "Accounts receivable",
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "IncreaseDecreaseInContractWithCustomerAssetAndLiability",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 9.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_IncreaseDecreaseInContractWithCustomerAssetAndLiability",
        "terseLabel": "Costs and estimated earnings in excess of billings on uncompleted contracts",
        "documentation": "Amount of increase (decrease) in contract assets and liabilities."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_IncreaseDecreaseInCustomerDeposits1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "IncreaseDecreaseInCustomerDeposits1",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 14.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_IncreaseDecreaseInCustomerDeposits1",
        "terseLabel": "Customers' deposits",
        "documentation": "The increase (decrease) during the period in customer deposits."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInEmployeeRelatedLiabilities",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 15.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities",
        "terseLabel": "Accrued compensation and payroll taxes",
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 13.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable",
        "terseLabel": "Income tax receivable",
        "documentation": "The increase (decrease) during the reporting period in the amounts payable to taxing authorities for taxes that are based on the reporting entity's earnings, net of amounts receivable from taxing authorities for refunds of overpayments or recoveries of income taxes."
       }
      }
     },
     "auth_ref": [
      "r707"
     ]
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInInventories",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 10.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInInventories",
        "negatedTerseLabel": "Inventories",
        "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Changes in operating assets and liabilities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInOtherOperatingCapitalNet",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet",
        "negatedTerseLabel": "Other assets and liabilities",
        "documentation": "Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncreaseDecreaseInOutstandingChecksFinancingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInOutstandingChecksFinancingActivities",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Increase (decrease) in drafts payable",
        "documentation": "The change in cash during the period due to the net increase or decrease in outstanding checks, the liability that represents checks that have been issued but that have not cleared. The entity may classify these cash flows as financing or operating activities."
       }
      }
     },
     "auth_ref": [
      "r7",
      "r25"
     ]
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0,
       "order": 12.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
        "negatedTerseLabel": "Prepaid expenses and other current assets",
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stock options and restricted stock with exercise prices or grant date prices below the average market prices (in shares)",
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method."
       }
      }
     },
     "auth_ref": [
      "r215",
      "r216",
      "r217",
      "r221",
      "r346"
     ]
    },
    "ecd_InsiderTradingArrLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "InsiderTradingArrLineItems",
     "auth_ref": [
      "r678"
     ]
    },
    "us-gaap_InterestIncomeExpenseNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InterestIncomeExpenseNet",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_InterestIncomeExpenseNet",
        "negatedLabel": "Interest expense",
        "documentation": "Amount of interest income (expense) classified as operating."
       }
      }
     },
     "auth_ref": [
      "r491",
      "r720"
     ]
    },
    "us-gaap_InterestPaidNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InterestPaidNet",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash interest paid",
        "documentation": "Amount of cash paid for interest, excluding capitalized interest, classified as operating activity. Includes, but is not limited to, payment to settle zero-coupon bond for accreted interest of debt discount and debt instrument with insignificant coupon interest rate in relation to effective interest rate of borrowing attributable to accreted interest of debt discount."
       }
      }
     },
     "auth_ref": [
      "r176",
      "r179",
      "r180"
     ]
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventory Disclosure [Text Block]",
        "documentation": "The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory."
       }
      }
     },
     "auth_ref": [
      "r267"
     ]
    },
    "us-gaap_InventoryFinishedGoods": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryFinishedGoods",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": "us-gaap_InventoryGross",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finished goods",
        "documentation": "Amount before valuation and LIFO reserves of completed merchandise or goods expected to be sold within one year or operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r698"
     ]
    },
    "us-gaap_InventoryGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryGross",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_InventoryGross",
        "totalLabel": "Subtotal",
        "documentation": "Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process."
       }
      }
     },
     "auth_ref": [
      "r701"
     ]
    },
    "us-gaap_InventoryNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryNet",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 0.0
      },
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventories",
        "totalLabel": "Inventories",
        "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r162",
      "r616",
      "r656"
     ]
    },
    "us-gaap_InventoryRawMaterials": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryRawMaterials",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": "us-gaap_InventoryGross",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Raw materials",
        "documentation": "Amount before valuation and LIFO reserves of raw materials expected to be sold, or consumed within one year or operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r700"
     ]
    },
    "us-gaap_InventoryValuationReserves": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryValuationReserves",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": "us-gaap_InventoryNet",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Less allowance",
        "documentation": "Amount of valuation reserve for inventory."
       }
      }
     },
     "auth_ref": [
      "r94",
      "r701"
     ]
    },
    "us-gaap_InventoryWorkInProcess": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "InventoryWorkInProcess",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details": {
       "parentTag": "us-gaap_InventoryGross",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Work in process",
        "documentation": "Amount before valuation and LIFO reserves of merchandise or goods in the production process expected to be completed within one year or operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r699"
     ]
    },
    "ppih_JointVentureMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "JointVentureMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Joint Venture [Member]",
        "documentation": "Relating to the Joint Venture."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LandAndBuildingsInLebanonTennesseeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LandAndBuildingsInLebanonTennesseeMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Land and Buildings in Lebanon, Tennessee [Member]",
        "documentation": "Represents the sale leaseback transaction in connection with the land and buildings in Lebanon, Tennessee."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LeaseContractualTermAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LeaseContractualTermAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease Contractual Term [Axis]",
        "documentation": "Information by contractual term of lease arrangement."
       }
      }
     },
     "auth_ref": [
      "r471",
      "r690"
     ]
    },
    "us-gaap_LeaseContractualTermDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LeaseContractualTermDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease Contractual Term [Domain]",
        "documentation": "Contractual term of lease arrangement."
       }
      }
     },
     "auth_ref": [
      "r471",
      "r690"
     ]
    },
    "us-gaap_LeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LeaseCost",
        "totalLabel": "Total Lease costs",
        "documentation": "Amount of lease cost recognized by lessee for lease contract."
       }
      }
     },
     "auth_ref": [
      "r460",
      "r655"
     ]
    },
    "us-gaap_LeaseCostTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LeaseCostTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease, Cost [Table Text Block]",
        "documentation": "Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income."
       }
      }
     },
     "auth_ref": [
      "r772"
     ]
    },
    "dei_LegalEntityAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "LegalEntityAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information",
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables",
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Legal Entity [Axis]",
        "documentation": "The set of legal entities associated with a report."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LesseeFinanceLeaseAnnualRentIncreasePercentage",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LesseeFinanceLeaseAnnualRentIncreasePercentage",
        "terseLabel": "Lessee, Finance Lease, Annual Rent Increase, Percentage",
        "documentation": "The percentage of annual rent increase on the finance lease of the lessee."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeFinanceLeaseDiscountRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeFinanceLeaseDiscountRate",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeFinanceLeaseDiscountRate",
        "terseLabel": "Lessee, Finance Lease, Discount Rate",
        "documentation": "Discount rate used by lessee to determine present value of finance lease payments."
       }
      }
     },
     "auth_ref": [
      "r771"
     ]
    },
    "ppih_LesseeFinanceLeaseNumberOfOptionsToExtend": {
     "xbrltype": "integerItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LesseeFinanceLeaseNumberOfOptionsToExtend",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LesseeFinanceLeaseNumberOfOptionsToExtend",
        "terseLabel": "Lessee, Finance Lease, Number of Options to Extend",
        "documentation": "The number of options to extend the finance lease of the lessee."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeFinanceLeaseRenewalTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeFinanceLeaseRenewalTerm1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeFinanceLeaseRenewalTerm1",
        "terseLabel": "Lessee, Finance Lease, Renewal Term (Year)",
        "documentation": "Term of lessee's finance lease renewal, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r770"
     ]
    },
    "us-gaap_LesseeFinanceLeaseTermOfContract1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeFinanceLeaseTermOfContract1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeFinanceLeaseTermOfContract1",
        "terseLabel": "Lessee, Finance Lease, Term of Contract (Year)",
        "documentation": "Term of lessee's finance lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r770"
     ]
    },
    "ppih_LesseeOperatingAndFinanceLeasesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LesseeOperatingAndFinanceLeasesTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Operating and Finance Leases [Text Block]",
        "documentation": "The entire disclosure for operating and finance leases of lessee."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LesseeOperatingLeaseAnnualPayment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LesseeOperatingLeaseAnnualPayment",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LesseeOperatingLeaseAnnualPayment",
        "terseLabel": "Lessee, Operating Lease, Annual Payment",
        "documentation": "Represents the amount of payment expected to be made per year under operating lease of lessee."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
        "totalLabel": "Total lease payments, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Thereafter, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the year ended January 31, 2026, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the year ended January 31, 2030, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the year ended January 31, 2029, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the year ended January 31, 2028, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the year ended January 31, 2027, operating leases",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach)."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details": {
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "For the six months ending January 31, 2025",
        "label": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease having initial or remaining lease term in excess of one year to be paid in remainder of current fiscal year."
       }
      }
     },
     "auth_ref": [
      "r773"
     ]
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
        "negatedLabel": "Less: amount representing interest, operating leases",
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease."
       }
      }
     },
     "auth_ref": [
      "r469"
     ]
    },
    "us-gaap_LettersOfCreditOutstandingAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LettersOfCreditOutstandingAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LettersOfCreditOutstandingAmount",
        "terseLabel": "Letters of Credit Outstanding, Amount",
        "documentation": "The total amount of the contingent obligation under letters of credit outstanding as of the reporting date."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_Liabilities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "Liabilities",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_Liabilities",
        "terseLabel": "Liabilities",
        "documentation": "Amount of liability recognized for present obligation requiring transfer or otherwise providing economic benefit to others."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r57",
      "r58",
      "r59",
      "r62",
      "r63",
      "r64",
      "r65",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r413",
      "r416",
      "r417",
      "r440",
      "r559",
      "r619",
      "r672",
      "r750",
      "r775",
      "r776"
     ]
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LiabilitiesAndStockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LiabilitiesAndStockholdersEquity",
        "totalLabel": "Total liabilities and stockholders' equity",
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any."
       }
      }
     },
     "auth_ref": [
      "r73",
      "r113",
      "r506",
      "r656",
      "r711",
      "r727",
      "r765"
     ]
    },
    "us-gaap_LiabilitiesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LiabilitiesCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LiabilitiesCurrent",
        "totalLabel": "Total current liabilities",
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r59",
      "r151",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r413",
      "r416",
      "r417",
      "r440",
      "r656",
      "r750",
      "r775",
      "r776"
     ]
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LiabilitiesCurrentAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current liabilities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LiabilitiesNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LiabilitiesNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LiabilitiesNoncurrent",
        "totalLabel": "Total long-term liabilities",
        "documentation": "Amount of obligation due after one year or beyond the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r62",
      "r63",
      "r64",
      "r65",
      "r184",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r413",
      "r416",
      "r417",
      "r440",
      "r750",
      "r775",
      "r776"
     ]
    },
    "us-gaap_LiabilitiesNoncurrentAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LiabilitiesNoncurrentAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-term liabilities"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityCapitalExpendituresRestrictions": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityCapitalExpendituresRestrictions",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityCapitalExpendituresRestrictions",
        "terseLabel": "Line of Credit Facility, Capital Expenditures Restrictions",
        "documentation": "Maximum amount of capital expenditures allowed under a credit agreement."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityCommonStockRepurchaseRestrictions",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityCommonStockRepurchaseRestrictions",
        "terseLabel": "Line of Credit Facility, Common Stock Repurchase Restrictions",
        "documentation": "Maximum amount of common stock repurchase allowed under credit agreement."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability",
        "terseLabel": "Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability",
        "documentation": "The minimum amount of undrawn availability that triggers the EDITDA ratio covenant under the debt instrument."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays",
        "terseLabel": "Line of Credit Facility, Covenant Terms, EBITDA Ratio, Minimum Undrawn Availability for Five Consecutive Days",
        "documentation": "The minimum amount of undrawn availability for five consecutive days that will trigger the EBITDA ratio covenant of the line of credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LineOfCreditFacilityCurrentBorrowingCapacity",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity",
        "terseLabel": "Line of Credit Facility, Current Borrowing Capacity",
        "documentation": "Amount of current borrowing capacity under the credit facility considering any current restrictions on the amount that could be borrowed (for example, borrowings may be limited by the amount of current assets), but without considering any amounts currently outstanding under the facility."
       }
      }
     },
     "auth_ref": [
      "r56",
      "r61"
     ]
    },
    "ppih_LineOfCreditFacilityDefaultAdditionalInterestRate": {
     "xbrltype": "percentItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityDefaultAdditionalInterestRate",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityDefaultAdditionalInterestRate",
        "terseLabel": "Line of Credit Facility, Default, Additional Interest Rate",
        "documentation": "The amount of additional interest in the event of default of the line of credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired": {
     "xbrltype": "pureItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityFixedChargeCoverageRatioRequired",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityFixedChargeCoverageRatioRequired",
        "terseLabel": "Line of Credit Facility, Fixed Charge Coverage Ratio Required",
        "documentation": "Represents the fixed charge coverage ratio required under a line of credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LineOfCreditFacilityGuaranteedAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LineOfCreditFacilityGuaranteedAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_LineOfCreditFacilityGuaranteedAmount",
        "terseLabel": "Line of Credit Facility, Guaranteed Amount",
        "documentation": "Amount of debt guaranteed under credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LineOfCreditFacilityInterestRateAtPeriodEnd",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityInterestRateAtPeriodEnd",
        "terseLabel": "Line of Credit Facility, Interest Rate at Period End",
        "documentation": "The effective interest rate at the end of the reporting period."
       }
      }
     },
     "auth_ref": [
      "r56",
      "r61"
     ]
    },
    "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LineOfCreditFacilityMaximumBorrowingCapacity",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity",
        "terseLabel": "Line of Credit Facility, Maximum Borrowing Capacity",
        "documentation": "Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility."
       }
      }
     },
     "auth_ref": [
      "r56",
      "r61"
     ]
    },
    "us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LineOfCreditFacilityRemainingBorrowingCapacity",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityRemainingBorrowingCapacity",
        "terseLabel": "Line of Credit Facility, Remaining Borrowing Capacity",
        "documentation": "Amount of borrowing capacity currently available under the credit facility (current borrowing capacity less the amount of borrowings outstanding)."
       }
      }
     },
     "auth_ref": [
      "r56",
      "r61",
      "r287"
     ]
    },
    "us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage",
        "terseLabel": "Line of Credit Facility, Unused Capacity, Commitment Fee Percentage",
        "documentation": "The fee, expressed as a percentage of the line of credit facility, for available but unused credit capacity under the credit facility."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LinesOfCreditCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LinesOfCreditCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving line - North America",
        "terseLabel": "Line of Credit, Current",
        "documentation": "The carrying value as of the balance sheet date of the current portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement."
       }
      }
     },
     "auth_ref": [
      "r57",
      "r109"
     ]
    },
    "us-gaap_LoansNotesTradeAndOtherReceivablesDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LoansNotesTradeAndOtherReceivablesDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Loans, Notes, Trade and Other Receivables Disclosure [Text Block]",
        "documentation": "The entire disclosure for claims held for amounts due to entity, excluding financing receivables. Examples include, but are not limited to, trade accounts receivables, notes receivables, loans receivables. Includes disclosure for allowance for credit losses."
       }
      }
     },
     "auth_ref": [
      "r448",
      "r725"
     ]
    },
    "dei_LocalPhoneNumber": {
     "xbrltype": "normalizedStringItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "LocalPhoneNumber",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Local Phone Number",
        "documentation": "Local phone number for entity."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LongTermDebtAndCapitalLeaseObligationsCurrent",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_LongTermDebtAndCapitalLeaseObligationsCurrent",
        "terseLabel": "Long-Term Debt and Lease Obligation, Current",
        "documentation": "Amount of long-term debt and lease obligation, classified as current."
       }
      }
     },
     "auth_ref": [
      "r58"
     ]
    },
    "us-gaap_LongTermDebtNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LongTermDebtNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-term debt, less current maturities",
        "documentation": "Amount, after deduction of unamortized premium (discount) and debt issuance cost, of long-term debt classified as noncurrent. Excludes lease obligation."
       }
      }
     },
     "auth_ref": [
      "r159"
     ]
    },
    "us-gaap_LongTermLoansPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LongTermLoansPayable",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Loan payable to GIG",
        "documentation": "Carrying value as of the balance sheet date of loans payable (with maturities initially due after one year or beyond the operating cycle if longer), excluding current portion."
       }
      }
     },
     "auth_ref": [
      "r17"
     ]
    },
    "ppih_LongtermDebtAndLeaseObligationNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LongtermDebtAndLeaseObligationNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Long-term finance obligation",
        "label": "ppih_LongtermDebtAndLeaseObligationNoncurrent",
        "terseLabel": "Long-Term Debt and Lease Obligation, Noncurrent",
        "documentation": "Amount of long-term debt and lease obligation, classified as noncurrent."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 9.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Current maturities of long-term debt",
        "label": "ppih_LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine",
        "terseLabel": "Long-term Debt, Current Maturities, Excluding North American Revolving Line",
        "documentation": "Amount, after unamortized (discount) premium and debt issuance costs, of long-term debt, classified as current, excluding north american revolving lines of credit."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_LongtermDebtTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LongtermDebtTypeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Term Debt, Type [Axis]",
        "documentation": "Information by type of long-term debt."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r741",
      "r742",
      "r743"
     ]
    },
    "us-gaap_LongtermDebtTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "LongtermDebtTypeDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Term Debt, Type [Domain]",
        "documentation": "Type of long-term debt arrangement, such as notes, line of credit, commercial paper, asset-based financing, project financing, letter of credit financing. These are debt arrangements that originally required repayment more than twelve months after issuance or greater than the normal operating cycle of the company, if longer."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r34",
      "r741",
      "r742",
      "r743"
     ]
    },
    "srt_MaximumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "MaximumMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Maximum [Member]",
        "documentation": "Upper limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r144",
      "r145",
      "r282",
      "r283",
      "r284",
      "r285",
      "r342",
      "r380",
      "r430",
      "r484",
      "r527",
      "r528",
      "r539",
      "r551",
      "r552",
      "r603",
      "r604",
      "r605",
      "r606",
      "r607",
      "r612",
      "r613",
      "r629",
      "r637",
      "r642",
      "r650",
      "r651",
      "r652",
      "r653",
      "r658",
      "r754",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782"
     ]
    },
    "srt_MinimumMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "MinimumMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Minimum [Member]",
        "documentation": "Lower limit of the provided range."
       }
      }
     },
     "auth_ref": [
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r144",
      "r145",
      "r282",
      "r283",
      "r284",
      "r285",
      "r342",
      "r380",
      "r430",
      "r484",
      "r527",
      "r528",
      "r539",
      "r551",
      "r552",
      "r603",
      "r604",
      "r605",
      "r606",
      "r607",
      "r612",
      "r613",
      "r629",
      "r637",
      "r642",
      "r650",
      "r651",
      "r652",
      "r658",
      "r754",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782"
     ]
    },
    "us-gaap_MinorityInterestDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "MinorityInterestDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Noncontrolling Interest Disclosure [Text Block]",
        "documentation": "The entire disclosure for noncontrolling interest in consolidated subsidiaries, which could include the name of the subsidiary, the ownership percentage held by the parent, the ownership percentage held by the noncontrolling owners, the amount of the noncontrolling interest, the location of this amount on the balance sheet (when not reported separately), an explanation of the increase or decrease in the amount of the noncontrolling interest, the noncontrolling interest share of the net Income or Loss of the subsidiary, the location of this amount on the income statement (when not reported separately), the nature of the noncontrolling interest such as background information and terms, the amount of the noncontrolling interest represented by preferred stock, a description of the preferred stock, and the dividend requirements of the preferred stock."
       }
      }
     },
     "auth_ref": [
      "r104"
     ]
    },
    "us-gaap_MinorityInterestOwnershipPercentageByParent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "MinorityInterestOwnershipPercentageByParent",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_MinorityInterestOwnershipPercentageByParent",
        "terseLabel": "Subsidiary, Ownership Percentage, Parent",
        "documentation": "The parent entity's interest in net assets of the subsidiary, expressed as a percentage."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_MortgageNoteSecuredByTennesseeManufacturingFacilityMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "MortgageNoteSecuredByTennesseeManufacturingFacilityMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Mortgage Note Secured by Tennessee Manufacturing Facility [Member]",
        "documentation": "Represents information pertaining to a mortgage note secured by a manufacturing facility in Lebanon, Tennessee."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_MtrlTermsOfTrdArrTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "MtrlTermsOfTrdArrTextBlock",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Material Terms of Trading Arrangement [Text Block]"
       }
      }
     },
     "auth_ref": [
      "r679"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
        "totalLabel": "Net cash provided by financing activities",
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit."
       }
      }
     },
     "auth_ref": [
      "r178"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financing activities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
        "totalLabel": "Net cash used in investing activities",
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets."
       }
      }
     },
     "auth_ref": [
      "r178"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Investing activities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
        "totalLabel": "Net cash provided by operating activities",
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities."
       }
      }
     },
     "auth_ref": [
      "r89",
      "r90",
      "r91"
     ]
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating activities"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NetIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Net income",
        "label": "Net income (loss) attributable to common stock",
        "totalLabel": "Net income (loss) attributable to common stock",
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent."
       }
      }
     },
     "auth_ref": [
      "r82",
      "r91",
      "r115",
      "r149",
      "r164",
      "r166",
      "r170",
      "r184",
      "r194",
      "r198",
      "r199",
      "r201",
      "r202",
      "r203",
      "r207",
      "r208",
      "r218",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r406",
      "r410",
      "r429",
      "r440",
      "r513",
      "r582",
      "r597",
      "r598",
      "r670",
      "r750"
     ]
    },
    "us-gaap_NetIncomeLossAttributableToNoncontrollingInterest": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NetIncomeLossAttributableToNoncontrollingInterest",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Less: Net income attributable to non-controlling interest",
        "terseLabel": "Net Income (Loss) Attributable to Noncontrolling Interest",
        "documentation": "Amount of Net Income (Loss) attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r48",
      "r106",
      "r164",
      "r166",
      "r203",
      "r207",
      "r208",
      "r512",
      "r705"
     ]
    },
    "us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Standards Update and Change in Accounting Principle [Text Block]",
        "documentation": "The entire disclosure for change in accounting principle. Includes, but is not limited to, nature, reason, and method of adopting amendment to accounting standards or other change in accounting principle."
       }
      }
     },
     "auth_ref": [
      "r127",
      "r148",
      "r192",
      "r193",
      "r196",
      "r197",
      "r209",
      "r210",
      "r251",
      "r256",
      "r257",
      "r404",
      "r405",
      "r407",
      "r410",
      "r423",
      "r426",
      "r472",
      "r475",
      "r476",
      "r486",
      "r487",
      "r488",
      "r533",
      "r534",
      "r535",
      "r536",
      "r538"
     ]
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]",
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact."
       }
      }
     },
     "auth_ref": []
    },
    "ecd_NonRule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "NonRule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_NonRule10b51ArrAdoptedFlag",
        "terseLabel": "Non-Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r679"
     ]
    },
    "ecd_NonRule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "NonRule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_NonRule10b51ArrTrmntdFlag",
        "terseLabel": "Non-Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r679"
     ]
    },
    "us-gaap_NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fixed assets acquired from non affiliates - non-cash",
        "documentation": "The amount of fixed assets that an Entity acquires in a noncash (or part noncash) acquisition. Noncash is defined as information about all investing and financing activities of an enterprise during a period that affect recognized assets or liabilities but that do not result in cash receipts or cash payments in the period. \"Part noncash\" refers to that portion of the transaction not resulting in cash receipts or cash payments in the period."
       }
      }
     },
     "auth_ref": [
      "r27",
      "r28",
      "r29"
     ]
    },
    "us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NoncontrollingInterestIncreaseFromBusinessCombination",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NoncontrollingInterestIncreaseFromBusinessCombination",
        "terseLabel": "Noncontrolling Interest, Increase from Business Combination",
        "documentation": "Amount of increase in noncontrolling interest from a business combination."
       }
      }
     },
     "auth_ref": [
      "r11",
      "r37",
      "r46"
     ]
    },
    "ppih_NorthAmericanLoanPartiesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "NorthAmericanLoanPartiesMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "North American Loan Parties [Member]",
        "documentation": "Represents information regarding certain U.S. and Canadian subsidiaries collectively referred to as the North American Loan Parties."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_NoteToFinancialStatementDetailsTextual": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "NoteToFinancialStatementDetailsTextual",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note To Financial Statement Details Textual"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NotesPayable": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NotesPayable",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NotesPayable",
        "terseLabel": "Notes Payable",
        "documentation": "Including the current and noncurrent portions, aggregate carrying amount of all types of notes payable, as of the balance sheet date, with initial maturities beyond one year or beyond the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r111",
      "r783",
      "r784"
     ]
    },
    "us-gaap_NotesReceivableNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NotesReceivableNet",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NotesReceivableNet",
        "terseLabel": "Financing Receivable, after Allowance for Credit Loss",
        "documentation": "Amortized cost, after allowance for credit loss, of financing receivable. Excludes financing receivable covered under loss sharing agreement and net investment in lease."
       }
      }
     },
     "auth_ref": [
      "r266",
      "r569",
      "r726",
      "r786"
     ]
    },
    "ppih_NotesToFinancialStatementsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "NotesToFinancialStatementsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Notes To Financial Statements [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_NumberOfMajorCustomers": {
     "xbrltype": "integerItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "NumberOfMajorCustomers",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_NumberOfMajorCustomers",
        "terseLabel": "Number of Major Customers",
        "documentation": "Represents the number of major customers accounting for 10% or more of the specified concentration risk benchmark, which includes, but not limited to, sales revenue, accounts receivable, etc."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_NumberOfReportableSegments": {
     "xbrltype": "integerItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "NumberOfReportableSegments",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_NumberOfReportableSegments",
        "terseLabel": "Number of Reportable Segments",
        "documentation": "Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements."
       }
      }
     },
     "auth_ref": [
      "r621",
      "r628",
      "r719"
     ]
    },
    "us-gaap_OperatingExpenses": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingExpenses",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingExpenses",
        "totalLabel": "Total operating expenses",
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OperatingExpensesAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingExpensesAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating expenses"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OperatingIncomeLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingIncomeLoss",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingIncomeLoss",
        "totalLabel": "Income from operations",
        "documentation": "The net result for the period of deducting operating expenses from operating revenues."
       }
      }
     },
     "auth_ref": [
      "r118",
      "r620",
      "r718",
      "r720",
      "r721",
      "r722",
      "r723"
     ]
    },
    "us-gaap_OperatingLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating lease costs",
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability."
       }
      }
     },
     "auth_ref": [
      "r462",
      "r655"
     ]
    },
    "us-gaap_OperatingLeaseExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseExpense",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_OperatingLeaseExpense",
        "terseLabel": "Operating Lease, Expense",
        "documentation": "Amount of operating lease expense. Excludes sublease income."
       }
      }
     },
     "auth_ref": [
      "r769"
     ]
    },
    "us-gaap_OperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseLiability",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Total lease liabilities, operating leases",
        "terseLabel": "Operating Lease, Liability",
        "totalLabel": "Total operating lease liabilities",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseLiabilityCurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0,
       "order": 1.0
      },
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0,
       "order": 7.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating lease liability short-term",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_OperatingLeaseLiability",
       "weight": 1.0,
       "order": 0.0
      },
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating lease liability long-term",
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent."
       }
      }
     },
     "auth_ref": [
      "r455"
     ]
    },
    "us-gaap_OperatingLeasePayments": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeasePayments",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating cash outflows from operating leases",
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use."
       }
      }
     },
     "auth_ref": [
      "r459",
      "r465"
     ]
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseRightOfUseAsset",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsNoncurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating lease right-of-use asset",
        "terseLabel": "Operating Lease, Right-of-Use Asset",
        "documentation": "Amount of lessee's right to use underlying asset under operating lease."
       }
      }
     },
     "auth_ref": [
      "r454"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "xbrltype": "percentItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating leases",
        "documentation": "Weighted average discount rate for operating lease calculated at point in time."
       }
      }
     },
     "auth_ref": [
      "r468",
      "r655"
     ]
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating leases (Year)",
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days."
       }
      }
     },
     "auth_ref": [
      "r467",
      "r655"
     ]
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]",
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure."
       }
      }
     },
     "auth_ref": [
      "r54",
      "r104",
      "r541",
      "r542"
     ]
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherAssetsNoncurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsNoncurrent",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other long-term assets",
        "documentation": "Amount of noncurrent assets classified as other."
       }
      }
     },
     "auth_ref": [
      "r156"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Foreign currency translation adjustment",
        "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature."
       }
      }
     },
     "auth_ref": [
      "r2",
      "r514"
     ]
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPeriodIncreaseDecreaseAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other comprehensive income (loss)"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherLiabilitiesNoncurrent",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesNoncurrent",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other long-term liabilities",
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r63"
     ]
    },
    "us-gaap_OtherNoncurrentAssetsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherNoncurrentAssetsMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Noncurrent Assets [Member]",
        "documentation": "Primary financial statement caption encompassing other noncurrent assets."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "OtherNonoperatingIncomeExpense",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other (expense) income",
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other."
       }
      }
     },
     "auth_ref": [
      "r84"
     ]
    },
    "srt_OwnershipAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "OwnershipAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Ownership [Axis]",
        "documentation": "Information by name of entity in which ownership interest is disclosed. Excludes equity method investee and named security investment."
       }
      }
     },
     "auth_ref": []
    },
    "srt_OwnershipDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "OwnershipDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Ownership [Domain]",
        "documentation": "Name of entity in which ownership interest is disclosed. Excludes equity method investee and named security investment."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsForRepurchaseOfCommonStock",
        "negatedLabel": "Repurchase of common stock",
        "documentation": "The cash outflow to reacquire common stock during the period."
       }
      }
     },
     "auth_ref": [
      "r87"
     ]
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment",
        "negatedLabel": "Capital expenditures",
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets."
       }
      }
     },
     "auth_ref": [
      "r86"
     ]
    },
    "ppih_PercentOfRevenueFromContractWithCustomerIncludingAssessedTax": {
     "xbrltype": "percentItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "PercentOfRevenueFromContractWithCustomerIncludingAssessedTax",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Sales by product, percent",
        "documentation": "Represents the percentage of revenue from contracts with customers that is attributable to a specified product or service."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_PermaPipeCanadaLtdMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "PermaPipeCanadaLtdMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Perma-Pipe Canada, Ltd [Member]",
        "documentation": "Information by business combination or series of individually immaterial business combinations."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PolicyTextBlockAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PolicyTextBlockAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PolicyTextBlockAbstract",
        "terseLabel": "Accounting Policies"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Prepaid expenses and other current assets",
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": [
      "r702"
     ]
    },
    "us-gaap_ProceedsFromInsuranceSettlementInvestingActivities": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProceedsFromInsuranceSettlementInvestingActivities",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Proceeds from insurance recovery for property and equipment",
        "documentation": "Amount of cash inflow for proceeds from settlement of insurance claim, classified as investing activities. Excludes insurance settlement classified as operating activities."
       }
      }
     },
     "auth_ref": [
      "r4",
      "r22"
     ]
    },
    "us-gaap_ProceedsFromIssuanceOfDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProceedsFromIssuanceOfDebt",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ProceedsFromIssuanceOfDebt",
        "terseLabel": "Proceeds from Issuance of Debt",
        "documentation": "The cash inflow during the period from additional borrowings in aggregate debt. Includes proceeds from short-term and long-term debt."
       }
      }
     },
     "auth_ref": [
      "r706"
     ]
    },
    "us-gaap_ProceedsFromLinesOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProceedsFromLinesOfCredit",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Proceeds from revolving credit lines",
        "documentation": "Amount of cash inflow from contractual arrangement with the lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements."
       }
      }
     },
     "auth_ref": [
      "r23",
      "r710"
     ]
    },
    "ppih_ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stock options exercised and taxes paid related to restricted shares vested",
        "documentation": "Represents the cash inflow (outflow) related to stock options exercised and taxes related to restricted shares vested."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProceedsFromSaleOfPropertyPlantAndEquipment",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment",
        "terseLabel": "Proceeds from Sale of Property, Plant, and Equipment, Total",
        "documentation": "The cash inflow from the sale of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale."
       }
      }
     },
     "auth_ref": [
      "r85"
     ]
    },
    "us-gaap_ProductMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProductMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product [Member]",
        "documentation": "Article or substance produced by nature, labor or machinery."
       }
      }
     },
     "auth_ref": [
      "r638"
     ]
    },
    "srt_ProductOrServiceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "ProductOrServiceAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Axis]",
        "documentation": "Information by product and service, or group of similar products and similar services."
       }
      }
     },
     "auth_ref": [
      "r135",
      "r136",
      "r137",
      "r138",
      "r139",
      "r140",
      "r142",
      "r247",
      "r485",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r526",
      "r614",
      "r638",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r696",
      "r745",
      "r746",
      "r757",
      "r788",
      "r791",
      "r792",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r815",
      "r816",
      "r817",
      "r818"
     ]
    },
    "srt_ProductsAndServicesDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "ProductsAndServicesDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Domain]",
        "documentation": "Product or service, or a group of similar products or similar services."
       }
      }
     },
     "auth_ref": [
      "r135",
      "r136",
      "r137",
      "r138",
      "r139",
      "r140",
      "r142",
      "r247",
      "r485",
      "r520",
      "r521",
      "r522",
      "r523",
      "r524",
      "r525",
      "r526",
      "r614",
      "r638",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r696",
      "r745",
      "r746",
      "r757",
      "r788",
      "r791",
      "r792",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r805",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r815",
      "r816",
      "r817",
      "r818"
     ]
    },
    "us-gaap_ProfitLoss": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProfitLoss",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited": {
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest",
       "weight": 1.0,
       "order": 0.0
      },
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 1.0
      },
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "verboseLabel": "Net income",
        "label": "us-gaap_ProfitLoss",
        "totalLabel": "Net income",
        "documentation": "The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r149",
      "r164",
      "r166",
      "r177",
      "r184",
      "r194",
      "r203",
      "r207",
      "r208",
      "r254",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r293",
      "r294",
      "r295",
      "r296",
      "r406",
      "r410",
      "r411",
      "r414",
      "r415",
      "r429",
      "r440",
      "r496",
      "r511",
      "r548",
      "r582",
      "r597",
      "r598",
      "r645",
      "r646",
      "r671",
      "r705",
      "r750"
     ]
    },
    "ppih_PromissoryNoteMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "PromissoryNoteMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Promissory Note [Member]",
        "documentation": "Promissory note."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Lived Tangible Asset [Axis]",
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale."
       }
      }
     },
     "auth_ref": [
      "r8",
      "r470"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentFairValueDisclosure": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PropertyPlantAndEquipmentFairValueDisclosure",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_PropertyPlantAndEquipmentFairValueDisclosure",
        "terseLabel": "Property, Plant, and Equipment, Fair Value Disclosure",
        "documentation": "Fair value portion of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r648",
      "r760",
      "r761",
      "r764"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PropertyPlantAndEquipmentGross",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property and Equipment - gross",
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r95",
      "r153",
      "r509"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PropertyPlantAndEquipmentNet",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsNoncurrent",
       "weight": 1.0,
       "order": 3.0
      },
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, plant and equipment, net of accumulated depreciation",
        "totalLabel": "Property and Equipment - net",
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures."
       }
      }
     },
     "auth_ref": [
      "r8",
      "r470",
      "r497",
      "r509",
      "r656"
     ]
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Long-Lived Tangible Asset [Domain]",
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software."
       }
      }
     },
     "auth_ref": [
      "r95",
      "r470"
     ]
    },
    "us-gaap_ProvisionForDoubtfulAccounts": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ProvisionForDoubtfulAccounts",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Provision on uncollectible accounts",
        "documentation": "Amount of expense (reversal of expense) for expected credit loss on accounts receivable."
       }
      }
     },
     "auth_ref": [
      "r175",
      "r263"
     ]
    },
    "srt_RangeAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "RangeAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Axis]",
        "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r144",
      "r145",
      "r282",
      "r283",
      "r284",
      "r285",
      "r340",
      "r342",
      "r370",
      "r371",
      "r372",
      "r380",
      "r430",
      "r482",
      "r483",
      "r484",
      "r527",
      "r528",
      "r539",
      "r551",
      "r552",
      "r603",
      "r604",
      "r605",
      "r606",
      "r607",
      "r612",
      "r613",
      "r629",
      "r637",
      "r642",
      "r650",
      "r651",
      "r652",
      "r653",
      "r658",
      "r664",
      "r744",
      "r754",
      "r762",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782"
     ]
    },
    "srt_RangeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "RangeMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Domain]",
        "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median."
       }
      }
     },
     "auth_ref": [
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r144",
      "r145",
      "r282",
      "r283",
      "r284",
      "r285",
      "r340",
      "r342",
      "r370",
      "r371",
      "r372",
      "r380",
      "r430",
      "r482",
      "r483",
      "r484",
      "r527",
      "r528",
      "r539",
      "r551",
      "r552",
      "r603",
      "r604",
      "r605",
      "r606",
      "r607",
      "r612",
      "r613",
      "r629",
      "r637",
      "r642",
      "r650",
      "r651",
      "r652",
      "r653",
      "r658",
      "r664",
      "r744",
      "r754",
      "r762",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782"
     ]
    },
    "us-gaap_ReceivablesBillingStatusDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ReceivablesBillingStatusDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Receivables Billing Status [Domain]",
        "documentation": "Amounts due from customers (or dealers) within the next year (or operating cycle, if longer) for goods or services that have been delivered or used, but not yet paid."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RedeemableNoncontrollingInterestEquityCarryingAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RedeemableNoncontrollingInterestEquityCarryingAmount",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 4.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Non-controlling interest",
        "terseLabel": "Redeemable Noncontrolling Interest, Equity, Carrying Amount",
        "documentation": "As of the reporting date, the aggregate carrying amount of all noncontrolling interests which are redeemable by the (parent) entity (1) at a fixed or determinable price on a fixed or determinable date, (2) at the option of the holder of the noncontrolling interest, or (3) upon occurrence of an event that is not solely within the control of the (parent) entity. This item includes noncontrolling interest holder's ownership (or holders' ownership) regardless of the type of equity interest (common, preferred, other) including all potential organizational (legal) forms of the investee entity."
       }
      }
     },
     "auth_ref": [
      "r35",
      "r36",
      "r97",
      "r98"
     ]
    },
    "us-gaap_RelatedPartyDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RelatedPartyDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Related and Nonrelated Parties [Domain]",
        "documentation": "Related and nonrelated parties. Related party includes, but is not limited to, affiliate, other entity for which investment is accounted for under equity method, trust for benefit of employee, principal owner, management, and member of immediate family, and other party that may be prevented from pursuing separate interests because of control, significant influence, or ownership interest."
       }
      }
     },
     "auth_ref": [
      "r252",
      "r341",
      "r477",
      "r478",
      "r500",
      "r507",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r579",
      "r581",
      "r602"
     ]
    },
    "us-gaap_RelatedPartyMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RelatedPartyMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Related Party [Member]",
        "documentation": "Party related to reporting entity. Includes, but is not limited to, affiliate, entity for which investment is accounted for by equity method, trust for benefit of employees, and principal owner, management, and members of immediate family."
       }
      }
     },
     "auth_ref": [
      "r186",
      "r187",
      "r477",
      "r478",
      "r479",
      "r480",
      "r500",
      "r507",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r579",
      "r581",
      "r602"
     ]
    },
    "us-gaap_RelatedPartyTransactionsByRelatedPartyAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RelatedPartyTransactionsByRelatedPartyAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Related and Nonrelated Parties [Axis]",
        "documentation": "Information by related and nonrelated parties. Related party includes, but is not limited to, affiliate, other entity for which investment is accounted for under equity method, trust for benefit of employee, principal owner, management, and member of immediate family, and other party that may be prevented from pursuing separate interests because of control, significant influence, or ownership interest."
       }
      }
     },
     "auth_ref": [
      "r252",
      "r341",
      "r477",
      "r478",
      "r500",
      "r507",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r579",
      "r581",
      "r602",
      "r774"
     ]
    },
    "ppih_RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Renewal of Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]",
        "documentation": "Represents revolving credit lines used by Saudi Arabian subsidiary."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RepaymentsOfDebtAndCapitalLeaseObligations",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfDebtAndCapitalLeaseObligations",
        "negatedLabel": "Payments of principal on finance obligation",
        "documentation": "Amount of cash outflow for short-term and long-term debt and lease obligation."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RepaymentsOfLinesOfCredit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RepaymentsOfLinesOfCredit",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfLinesOfCredit",
        "negatedLabel": "Payments of debt on revolving credit lines",
        "documentation": "Amount of cash outflow for payment of an obligation from a lender, including but not limited to, letter of credit, standby letter of credit and revolving credit arrangements."
       }
      }
     },
     "auth_ref": [
      "r88",
      "r710"
     ]
    },
    "us-gaap_RepaymentsOfOtherDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RepaymentsOfOtherDebt",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfOtherDebt",
        "negatedLabel": "Payments of other debt",
        "documentation": "Amount of cash outflow for the payment of debt classified as other."
       }
      }
     },
     "auth_ref": [
      "r88"
     ]
    },
    "us-gaap_RepaymentsOfSecuredDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RepaymentsOfSecuredDebt",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RepaymentsOfSecuredDebt",
        "terseLabel": "Repayments of Secured Debt",
        "documentation": "The cash outflow to repay long-term debt that is wholly or partially secured by collateral. Excludes repayments of tax exempt secured debt."
       }
      }
     },
     "auth_ref": [
      "r88"
     ]
    },
    "srt_RestatementAdjustmentMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "RestatementAdjustmentMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revision of Prior Period, Adjustment [Member]",
        "documentation": "Cumulative increase (decrease) for adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision."
       }
      }
     },
     "auth_ref": [
      "r189",
      "r190",
      "r191",
      "r205",
      "r206",
      "r225",
      "r427",
      "r428",
      "r452",
      "r683",
      "r684",
      "r685",
      "r686",
      "r689",
      "r691",
      "r692",
      "r724"
     ]
    },
    "srt_RestatementAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "RestatementAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revision of Prior Period [Axis]",
        "documentation": "Information by adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision."
       }
      }
     },
     "auth_ref": [
      "r143",
      "r147",
      "r189",
      "r190",
      "r191",
      "r194",
      "r195",
      "r198",
      "r199",
      "r200",
      "r201",
      "r204",
      "r205",
      "r206",
      "r207",
      "r208",
      "r209",
      "r225",
      "r258",
      "r259",
      "r402",
      "r403",
      "r406",
      "r407",
      "r409",
      "r410",
      "r425",
      "r427",
      "r428",
      "r429",
      "r450",
      "r452",
      "r473",
      "r474",
      "r529",
      "r530",
      "r531",
      "r532",
      "r533",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r543",
      "r724"
     ]
    },
    "srt_RestatementDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "RestatementDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revision of Prior Period [Domain]",
        "documentation": "Adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision."
       }
      }
     },
     "auth_ref": [
      "r143",
      "r147",
      "r189",
      "r190",
      "r191",
      "r194",
      "r195",
      "r198",
      "r199",
      "r200",
      "r201",
      "r204",
      "r205",
      "r206",
      "r207",
      "r208",
      "r209",
      "r225",
      "r258",
      "r259",
      "r402",
      "r403",
      "r406",
      "r407",
      "r409",
      "r410",
      "r425",
      "r427",
      "r428",
      "r429",
      "r450",
      "r452",
      "r473",
      "r474",
      "r529",
      "r530",
      "r531",
      "r532",
      "r533",
      "r534",
      "r535",
      "r536",
      "r537",
      "r538",
      "r543",
      "r724"
     ]
    },
    "us-gaap_RestrictedCashAndCashEquivalents": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RestrictedCashAndCashEquivalents",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details": {
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_RestrictedCashAndCashEquivalents",
        "terseLabel": "Restricted cash",
        "documentation": "Amount of cash and cash equivalents restricted as to withdrawal or usage. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates."
       }
      }
     },
     "auth_ref": [
      "r24",
      "r107",
      "r152",
      "r182",
      "r502"
     ]
    },
    "us-gaap_RestrictedCashCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RestrictedCashCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Restricted cash",
        "documentation": "Amount of cash restricted as to withdrawal or usage, classified as current. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits."
       }
      }
     },
     "auth_ref": [
      "r697",
      "r709"
     ]
    },
    "us-gaap_RestrictedStockMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RestrictedStockMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Restricted Stock [Member]",
        "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met."
       }
      }
     },
     "auth_ref": [
      "r30"
     ]
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RetainedEarningsAccumulatedDeficit",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retained earnings",
        "documentation": "Amount of accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r70",
      "r99",
      "r505",
      "r533",
      "r538",
      "r546",
      "r562",
      "r656"
     ]
    },
    "us-gaap_RetainedEarningsMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RetainedEarningsMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retained Earnings [Member]",
        "documentation": "Accumulated undistributed earnings (deficit)."
       }
      }
     },
     "auth_ref": [
      "r146",
      "r189",
      "r190",
      "r191",
      "r195",
      "r203",
      "r206",
      "r208",
      "r255",
      "r260",
      "r275",
      "r394",
      "r395",
      "r401",
      "r402",
      "r403",
      "r407",
      "r409",
      "r410",
      "r418",
      "r420",
      "r421",
      "r424",
      "r427",
      "r451",
      "r453",
      "r529",
      "r531",
      "r549",
      "r821"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RevenueFromContractWithCustomerIncludingAssessedTax",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Sales by product",
        "terseLabel": "Net sales",
        "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise."
       }
      }
     },
     "auth_ref": [
      "r116",
      "r117",
      "r226",
      "r233",
      "r234",
      "r240",
      "r244",
      "r247",
      "r249",
      "r250",
      "r336",
      "r337",
      "r485"
     ]
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue from Contract with Customer [Text Block]",
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts."
       }
      }
     },
     "auth_ref": [
      "r128",
      "r328",
      "r329",
      "r330",
      "r331",
      "r332",
      "r333",
      "r334",
      "r335",
      "r339"
     ]
    },
    "ppih_RevolvingCreditLinesUsedByEgyptSubsidiaries2Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingCreditLinesUsedByEgyptSubsidiaries2Member",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Lines Used by Egypt Subsidiaries 2 [Member]",
        "documentation": "Represents second revolving credit lines used by Egypt subsidiaries."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_RevolvingCreditLinesUsedByEgyptSubsidiariesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingCreditLinesUsedByEgyptSubsidiariesMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Lines Used by Egypt Subsidiaries [Member]",
        "documentation": "Represents information related to revolving credit lines used by Egypt subsidiaries."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Lines Used by Middle Eastern Subsidiaries, 1 [Member]",
        "documentation": "Represents the first revolving credit line used by the Company's Middle Eastern subsidiaries."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Lines Used by Middle Eastern Subsidiaries, 2 [Member]",
        "documentation": "Represents the second revolving credit line used by the Company's Middle Eastern subsidiaries."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Credit Lines Used by Saudi Arabian Subsidiary [Member]",
        "documentation": "Represents revolving credit lines used by Saudi Arabian subsidiary."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_RevolvingLinesNorthAmericaMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "RevolvingLinesNorthAmericaMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revolving Lines, North America [Member]",
        "documentation": "Represents information pertaining to revolving lines in North America."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fixed assets acquired under finance leases - non-cash",
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for finance lease liability."
       }
      }
     },
     "auth_ref": [
      "r466",
      "r655"
     ]
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating leases liabilities",
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability."
       }
      }
     },
     "auth_ref": [
      "r466",
      "r655"
     ]
    },
    "ecd_Rule10b51ArrAdoptedFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "Rule10b51ArrAdoptedFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_Rule10b51ArrAdoptedFlag",
        "terseLabel": "Rule 10b5-1 Arrangement Adopted [Flag]"
       }
      }
     },
     "auth_ref": [
      "r679"
     ]
    },
    "ecd_Rule10b51ArrTrmntdFlag": {
     "xbrltype": "booleanItemType",
     "nsuri": "http://xbrl.sec.gov/ecd/2024",
     "localname": "Rule10b51ArrTrmntdFlag",
     "presentation": [
      "http://xbrl.sec.gov/ecd/role/InsiderTradingArrangements"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ecd_Rule10b51ArrTrmntdFlag",
        "terseLabel": "Rule 10b5-1 Arrangement Terminated [Flag]"
       }
      }
     },
     "auth_ref": [
      "r679"
     ]
    },
    "ppih_SIBORMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SIBORMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "SIBOR [Member]",
        "documentation": "Represents Saudi Inter Bank Offered Rate."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SaleLeasebackTransactionAnnualRentalPaymentsAmount",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_SaleLeasebackTransactionAnnualRentalPaymentsAmount",
        "terseLabel": "Sale Leaseback Transaction, Annual Rental Payments, Amount",
        "documentation": "Amount of cash outflow from leaseback transactions."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SalesRevenueNetMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SalesRevenueNetMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue Benchmark [Member]",
        "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation."
       }
      }
     },
     "auth_ref": [
      "r250",
      "r687"
     ]
    },
    "srt_ScenarioUnspecifiedDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "ScenarioUnspecifiedDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Domain]",
        "documentation": "Scenario reported, distinguishing information from actual fact. Includes, but is not limited to, pro forma and forecast. Excludes actual facts."
       }
      }
     },
     "auth_ref": [
      "r143",
      "r209",
      "r343",
      "r681",
      "r715"
     ]
    },
    "us-gaap_ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Assumptions for Long-Duration Contracts by Product and Guarantee [Table Text Block]",
        "documentation": "Tabular disclosure of the underlying assumptions and percentages or rates used in determining the fair value of guarantee obligations for each type of long-duration contract."
       }
      }
     },
     "auth_ref": [
      "r122",
      "r123",
      "r124"
     ]
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]",
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations."
       }
      }
     },
     "auth_ref": [
      "r717"
     ]
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]",
        "documentation": "Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement."
       }
      }
     },
     "auth_ref": [
      "r41"
     ]
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfGoodwillTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Goodwill [Table Text Block]",
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule."
       }
      }
     },
     "auth_ref": [
      "r631",
      "r728",
      "r729",
      "r730",
      "r731",
      "r732",
      "r733",
      "r734",
      "r735",
      "r736",
      "r737",
      "r738"
     ]
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfInventoryCurrentTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Schedule of Inventory, Current [Table Text Block]",
        "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process."
       }
      }
     },
     "auth_ref": [
      "r18",
      "r75",
      "r76",
      "r77"
     ]
    },
    "us-gaap_ScheduleOfRestrictedCashAndCashEquivalentsTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfRestrictedCashAndCashEquivalentsTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Restrictions on Cash and Cash Equivalents [Table Text Block]",
        "documentation": "Tabular disclosure of cash and cash equivalents restricted as to withdrawal or usage."
       }
      }
     },
     "auth_ref": [
      "r16",
      "r107",
      "r785"
     ]
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]",
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value."
       }
      }
     },
     "auth_ref": [
      "r14",
      "r15",
      "r101"
     ]
    },
    "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]",
        "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SecuredDebt": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SecuredDebt",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SecuredDebt",
        "terseLabel": "Secured Debt",
        "documentation": "Carrying value as of the balance sheet date, including the current and noncurrent portions, of collateralized debt obligations (with maturities initially due after one year or beyond the operating cycle, if longer). Such obligations include mortgage loans, chattel loans, and any other borrowings secured by assets of the borrower."
       }
      }
     },
     "auth_ref": [
      "r17",
      "r111",
      "r783"
     ]
    },
    "ppih_SecuredOvernightFinancingRateSOFRMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SecuredOvernightFinancingRateSOFRMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Secured Overnight Financing Rate (SOFR) [Member]",
        "documentation": "Represents the Secured Overnight Financing Rate (SOFR)."
       }
      }
     },
     "auth_ref": []
    },
    "dei_Security12bTitle": {
     "xbrltype": "securityTitleItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "Security12bTitle",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Title of 12(b) Security",
        "documentation": "Title of a 12(b) registered security."
       }
      }
     },
     "auth_ref": [
      "r673"
     ]
    },
    "dei_SecurityExchangeName": {
     "xbrltype": "edgarExchangeCodeItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "SecurityExchangeName",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Security Exchange Name",
        "documentation": "Name of the Exchange on which a security is registered."
       }
      }
     },
     "auth_ref": [
      "r675"
     ]
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SegmentReportingDisclosureTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segment Reporting Disclosure [Text Block]",
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments."
       }
      }
     },
     "auth_ref": [
      "r119",
      "r226",
      "r228",
      "r229",
      "r230",
      "r231",
      "r232",
      "r237",
      "r238",
      "r239",
      "r242",
      "r243",
      "r244",
      "r245",
      "r246",
      "r247",
      "r248",
      "r250",
      "r621",
      "r622",
      "r623",
      "r624",
      "r626",
      "r627",
      "r628"
     ]
    },
    "us-gaap_SellingExpense": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SellingExpense",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited": {
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Selling expenses",
        "documentation": "Expenses recognized in the period that are directly related to the selling and distribution of products or services."
       }
      }
     },
     "auth_ref": [
      "r83"
     ]
    },
    "us-gaap_ShareBasedCompensation": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensation",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0,
       "order": 6.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensation",
        "terseLabel": "Stock-based compensation expense",
        "documentation": "Amount of noncash expense for share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r5"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
        "terseLabel": "Granted (in shares)",
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r362"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Granted, weighted average price (in dollars per share)",
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan)."
       }
      }
     },
     "auth_ref": [
      "r362"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
        "periodStartLabel": "Outstanding, weighted average price (in dollars per share)",
        "periodEndLabel": "Outstanding, weighted average price (in dollars per share)",
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options."
       }
      }
     },
     "auth_ref": [
      "r359",
      "r360"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber",
        "periodStartLabel": "Outstanding (in shares)",
        "periodEndLabel": "Outstanding (in shares)",
        "documentation": "Number of equity instruments other than options outstanding, including both vested and non-vested instruments."
       }
      }
     },
     "auth_ref": [
      "r102",
      "r103"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Exercised, aggregate intrinsic value",
        "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares."
       }
      }
     },
     "auth_ref": [
      "r366"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures and Expirations in Period (in shares)",
        "negatedLabel": "Expired or forfeited, options (in shares)",
        "documentation": "For presentations that combine terminations, the number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan or that expired."
       }
      }
     },
     "auth_ref": [
      "r758"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Expired or forfeited, weighted average exercise price (in dollars per share)",
        "documentation": "Weighted average price of options that were either forfeited or expired."
       }
      }
     },
     "auth_ref": [
      "r758"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Grants in Period, Gross (in shares)",
        "documentation": "Gross number of share options (or share units) granted during the period."
       }
      }
     },
     "auth_ref": [
      "r355"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Outstanding, aggregate intrinsic value",
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding."
       }
      }
     },
     "auth_ref": [
      "r40"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber",
        "periodStartLabel": "Outstanding, options (in shares)",
        "periodEndLabel": "Outstanding, options (in shares)",
        "documentation": "Number of fully vested and expected to vest options outstanding that can be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur."
       }
      }
     },
     "auth_ref": [
      "r367"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Award Type [Domain]",
        "documentation": "Award under share-based payment arrangement."
       }
      }
     },
     "auth_ref": [
      "r348",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r356",
      "r357",
      "r358",
      "r359",
      "r360",
      "r361",
      "r362",
      "r363",
      "r364",
      "r365",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373"
     ]
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Exercised, weighted average exercise price (in dollars per share)",
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares."
       }
      }
     },
     "auth_ref": [
      "r356"
     ]
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding",
        "terseLabel": "Outstanding, aggregate intrinsic value",
        "documentation": "Intrinsic value of outstanding award under share-based payment arrangement. Excludes share and unit options."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Forfeited or retired for taxes (in dollars per share)",
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised, or put into effect as a result of the occurrence of a terminating event, or retired for taxes."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod",
        "negatedLabel": "Vested and issued (in shares)",
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested and issued during the reporting period."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Vested and issued, weighted average price (in dollars per share)",
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Nonvested, Number of Shares (in shares)",
        "documentation": "Number of non-vested options outstanding."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "xbrltype": "durationItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Outstanding, weighted average remaining contractual term (Year)",
        "documentation": "Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur."
       }
      }
     },
     "auth_ref": [
      "r367"
     ]
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares",
        "terseLabel": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested, Number of Shares (in shares)",
        "documentation": "Number of options vested."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1": {
     "xbrltype": "perShareItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1",
        "periodStartLabel": "Outstanding, weighted average exercise price (in dollars per share)",
        "periodEndLabel": "Outstanding, weighted average exercise price (in dollars per share)",
        "documentation": "The weighted average price as of the balance sheet date at which grantees could acquire the underlying shares with respect to all outstanding stock options which are in the customized range of exercise prices."
       }
      }
     },
     "auth_ref": [
      "r102",
      "r103"
     ]
    },
    "us-gaap_SharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SharesOutstanding",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SharesOutstanding",
        "periodStartLabel": "Balances (in shares)",
        "periodEndLabel": "Balances (in shares)",
        "documentation": "Number of shares issued which are neither cancelled nor held in the treasury."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_ShortTermLeaseCost": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "ShortTermLeaseCost",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": 1.0,
       "order": 2.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Short-term lease costs (1)",
        "documentation": "Amount of short-term lease cost, excluding expense for lease with term of one month or less."
       }
      }
     },
     "auth_ref": [
      "r463",
      "r655"
     ]
    },
    "ppih_SpecialtyPipingSystemsAndCoatingMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SpecialtyPipingSystemsAndCoatingMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Specialty Piping Systems And Coating [Member]",
        "documentation": "Represents information pertaining to Specialty Piping Systems and Coating."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementEquityComponentsAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity Components [Axis]",
        "documentation": "Information by component of equity."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r67",
      "r71",
      "r72",
      "r146",
      "r168",
      "r169",
      "r170",
      "r189",
      "r190",
      "r191",
      "r195",
      "r203",
      "r206",
      "r208",
      "r227",
      "r255",
      "r260",
      "r275",
      "r324",
      "r394",
      "r395",
      "r401",
      "r402",
      "r403",
      "r407",
      "r409",
      "r410",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r424",
      "r427",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r451",
      "r453",
      "r474",
      "r514",
      "r529",
      "r530",
      "r531",
      "r549",
      "r599"
     ]
    },
    "us-gaap_StatementLineItems": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementLineItems",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables",
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement [Line Items]",
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table."
       }
      }
     },
     "auth_ref": [
      "r189",
      "r190",
      "r191",
      "r227",
      "r453",
      "r485",
      "r544",
      "r550",
      "r553",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r561",
      "r564",
      "r565",
      "r566",
      "r567",
      "r568",
      "r570",
      "r571",
      "r572",
      "r573",
      "r575",
      "r576",
      "r577",
      "r578",
      "r579",
      "r581",
      "r583",
      "r584",
      "r585",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r591",
      "r592",
      "r593",
      "r594",
      "r595",
      "r596",
      "r599",
      "r665"
     ]
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementOfCashFlowsAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementOfFinancialPositionAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementOfIncomeAndComprehensiveIncomeAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Comprehensive Income [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementOfStockholdersEquityAbstract",
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "auth_ref": []
    },
    "srt_StatementScenarioAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "StatementScenarioAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Axis]",
        "documentation": "Information by scenario reported, distinguishing information from actual fact. Includes, but is not limited to, pro forma and forecast. Excludes actual facts."
       }
      }
     },
     "auth_ref": [
      "r143",
      "r209",
      "r343",
      "r681",
      "r682",
      "r715"
     ]
    },
    "us-gaap_StatementTable": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StatementTable",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-comprehensive-income-loss-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-1-basis-of-presentation",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-maturities-of-lease-liabilities-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-13-fair-value-",
      "http://investors.permapipe.com/20240731/role/statement-note-14-recent-accounting-pronouncements-",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock",
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest",
      "http://investors.permapipe.com/20240731/role/statement-note-16-noncontrolling-interest-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting",
      "http://investors.permapipe.com/20240731/role/statement-note-2-business-segment-reporting-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable",
      "http://investors.permapipe.com/20240731/role/statement-note-3-accounts-receivable-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-schedule-of-inventory-details",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes",
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-goodwill-details",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-details-textual",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables",
      "http://investors.permapipe.com/20240731/role/statement-significant-accounting-policies-policies"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement [Table]",
        "documentation": "Disclosure of information about statement of comprehensive income, income, other comprehensive income, financial position, cash flows, and shareholders' equity."
       }
      }
     },
     "auth_ref": [
      "r189",
      "r190",
      "r191",
      "r227",
      "r252",
      "r453",
      "r485",
      "r544",
      "r550",
      "r553",
      "r554",
      "r555",
      "r556",
      "r557",
      "r558",
      "r561",
      "r564",
      "r565",
      "r566",
      "r567",
      "r568",
      "r570",
      "r571",
      "r572",
      "r573",
      "r575",
      "r576",
      "r577",
      "r578",
      "r579",
      "r581",
      "r583",
      "r584",
      "r585",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r591",
      "r592",
      "r593",
      "r594",
      "r595",
      "r596",
      "r599",
      "r665"
     ]
    },
    "ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-restricted-stock-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes",
        "negatedLabel": "Forfeited or retired for taxes (in shares)",
        "documentation": "Number of shares related to Restricted Stock Award forfeited or retired for taxes during the period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Shares issued, net of shares used for tax withholding (in shares)",
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP)."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r66",
      "r67",
      "r99"
     ]
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-stock-option-activity-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised",
        "negatedLabel": "Exercised, options (in shares)",
        "documentation": "Number of share options (or share units) exercised during the current period."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r66",
      "r67",
      "r99",
      "r356"
     ]
    },
    "srt_StockRepurchaseProgramAuthorizedAmount1": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "srt_StockRepurchaseProgramAuthorizedAmount1",
        "terseLabel": "Share Repurchase Program, Authorized, Amount",
        "documentation": "Amount authorized for purchase of share under share repurchase plan. Includes, but is not limited to, repurchase of stock and unit of ownership."
       }
      }
     },
     "auth_ref": [
      "r756"
     ]
    },
    "ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "StockRepurchaseProgramAuthorizedRepurchaseAmountUsed",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ppih_StockRepurchaseProgramAuthorizedRepurchaseAmountUsed",
        "terseLabel": "Stock Repurchase Program, Authorized Repurchase Amount Used",
        "documentation": "Amount used of the stock repurchase plan authorized."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_StockRepurchasedDuringPeriodShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StockRepurchasedDuringPeriodShares",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockRepurchasedDuringPeriodShares",
        "terseLabel": "Stock Repurchased During Period, Shares (in shares)",
        "documentation": "Number of shares that have been repurchased during the period and have not been retired and are not held in treasury. Some state laws may govern the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r66",
      "r67",
      "r99",
      "r545",
      "r599",
      "r608"
     ]
    },
    "us-gaap_StockholdersEquity": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StockholdersEquity",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_StockholdersEquity",
        "totalLabel": "Total stockholders' equity",
        "periodStartLabel": "Balance",
        "periodEndLabel": "Balance",
        "documentation": "Amount of equity (deficit) attributable to parent. Excludes temporary equity and equity attributable to noncontrolling interest."
       }
      }
     },
     "auth_ref": [
      "r67",
      "r71",
      "r72",
      "r93",
      "r563",
      "r580",
      "r600",
      "r601",
      "r656",
      "r672",
      "r711",
      "r727",
      "r765",
      "r821"
     ]
    },
    "us-gaap_StockholdersEquityAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "StockholdersEquityAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' equity"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SubleaseIncome": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SubleaseIncome",
     "crdr": "credit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details": {
       "parentTag": "us-gaap_LeaseCost",
       "weight": -1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-lease-costs-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_SubleaseIncome",
        "negatedLabel": "Sub-lease income",
        "documentation": "Amount of sublease income excluding finance and operating lease expense."
       }
      }
     },
     "auth_ref": [
      "r464",
      "r655"
     ]
    },
    "ppih_SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental Balance Sheet Information Related to Leases [Table Text Block]",
        "documentation": "Tabular disclosure of supplemental balance sheet information related to leases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_SupplementalCashFlowInformationAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "SupplementalCashFlowInformationAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental cash flow information"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_SupplementalCashFlowInformationRelatedLeasesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "SupplementalCashFlowInformationRelatedLeasesTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental Cash Flow Information Related Leases [Table Text Block]",
        "documentation": "Tabular disclosure of supplemental cash flow information related leases."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TableTextBlock": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-12-restricted-cash-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-5-inventories-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-7-impairment-of-longlived-assets-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-8-stockbased-compensation-tables",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TableTextBlock",
        "terseLabel": "Notes Tables"
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TimingOfTransferOfGoodOrServiceAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TimingOfTransferOfGoodOrServiceAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Timing of Transfer of Good or Service [Axis]",
        "documentation": "Information by timing of transfer of good or service to customer."
       }
      }
     },
     "auth_ref": [
      "r639",
      "r757"
     ]
    },
    "us-gaap_TimingOfTransferOfGoodOrServiceDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TimingOfTransferOfGoodOrServiceDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Timing of Transfer of Good or Service [Domain]",
        "documentation": "Timing of transfer of good or service to customer. Includes, but is not limited to, at point in time or over time."
       }
      }
     },
     "auth_ref": [
      "r639",
      "r757"
     ]
    },
    "dei_TradingSymbol": {
     "xbrltype": "tradingSymbolItemType",
     "nsuri": "http://xbrl.sec.gov/dei/2024",
     "localname": "TradingSymbol",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-document-and-entity-information"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Trading Symbol",
        "documentation": "Trading symbol of an instrument as listed on an exchange."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TransferredAtPointInTimeMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TransferredAtPointInTimeMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Transferred at Point in Time [Member]",
        "documentation": "Contract with customer in which good or service is transferred at point in time."
       }
      }
     },
     "auth_ref": [
      "r639"
     ]
    },
    "ppih_TransferredAtPointInTimeUsingInputMethodMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "TransferredAtPointInTimeUsingInputMethodMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Transferred at Point in Time Using Input Method [Member]",
        "documentation": "Represents information pertaining to transfers at a point in time using an input method."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_TransferredAtPointInTimeUsingOutputMethodMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "TransferredAtPointInTimeUsingOutputMethodMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Transferred at Point in Time Using Output Method [Member]",
        "documentation": "Represents information pertaining to transfers at a point in time using an output method."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TreasuryStockCommonMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TreasuryStockCommonMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Treasury Stock, Common [Member]",
        "documentation": "Previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r38"
     ]
    },
    "us-gaap_TreasuryStockCommonShares": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TreasuryStockCommonShares",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Treasury stock (in shares)",
        "documentation": "Number of previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r38"
     ]
    },
    "us-gaap_TreasuryStockCommonValue": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TreasuryStockCommonValue",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": -1.0,
       "order": 3.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TreasuryStockCommonValue",
        "negatedLabel": "Treasury stock, 112 shares at July 31, 2024 and January 31, 2024",
        "documentation": "Amount allocated to previously issued common shares repurchased by the issuing entity and held in treasury."
       }
      }
     },
     "auth_ref": [
      "r38",
      "r39",
      "r71"
     ]
    },
    "us-gaap_TreasuryStockTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TreasuryStockTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-15-treasury-stock"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Treasury Stock [Text Block]",
        "documentation": "The entire disclosure for treasury stock, including, but not limited to, average cost per share, description of share repurchase program, shares repurchased, shares held for each class of treasury stock."
       }
      }
     },
     "auth_ref": [
      "r100"
     ]
    },
    "ppih_TreasuryStockValueAcquired": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "TreasuryStockValueAcquired",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Repurchase of common stock",
        "documentation": "Equity impact of the common stock that were repurchased during the period."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_TreasuryStockValueAcquiredCostMethod": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "TreasuryStockValueAcquiredCostMethod",
     "crdr": "debit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-stockholders-equity-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TreasuryStockValueAcquiredCostMethod",
        "negatedLabel": "Repurchase of common stock",
        "documentation": "Equity impact of the cost of common and preferred stock that were repurchased during the period. Recorded using the cost method."
       }
      }
     },
     "auth_ref": [
      "r13",
      "r38",
      "r99"
     ]
    },
    "us-gaap_UnbilledReceivablesCurrent": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "UnbilledReceivablesCurrent",
     "crdr": "debit",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0,
       "order": 5.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-4-revenue-recognition-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Unbilled accounts receivable",
        "terseLabel": "Unbilled Receivables, Current",
        "documentation": "Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_UnbilledRevenuesMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "UnbilledRevenuesMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Unbilled Revenues [Member]",
        "documentation": "Unbilled amounts due for services rendered or products shipped. This element is distinct from unbilled contracts receivables because this is based on noncontract transactions."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_UndistributedEarningsOfForeignSubsidiaries": {
     "xbrltype": "monetaryItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "UndistributedEarningsOfForeignSubsidiaries",
     "crdr": "credit",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-6-income-taxes-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_UndistributedEarningsOfForeignSubsidiaries",
        "terseLabel": "Undistributed Earnings of Foreign Subsidiaries",
        "documentation": "Amount of undistributed earnings of foreign subsidiaries intended to be permanently reinvested outside the country of domicile."
       }
      }
     },
     "auth_ref": [
      "r9",
      "r10",
      "r121",
      "r382"
     ]
    },
    "us-gaap_VariableRateAxis": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "VariableRateAxis",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Variable Rate [Axis]",
        "documentation": "Information by type of variable rate."
       }
      }
     },
     "auth_ref": []
    },
    "us-gaap_VariableRateDomain": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "VariableRateDomain",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Variable Rate [Domain]",
        "documentation": "Interest rate that fluctuates over time as a result of an underlying benchmark interest rate or index."
       }
      }
     },
     "auth_ref": []
    },
    "srt_WeightedAverageMember": {
     "xbrltype": "domainItemType",
     "nsuri": "http://fasb.org/srt/2024",
     "localname": "WeightedAverageMember",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt",
      "http://investors.permapipe.com/20240731/role/statement-note-10-debt-details-textual"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted Average [Member]",
        "documentation": "Average of a range of values, calculated with consideration of proportional relevance."
       }
      }
     },
     "auth_ref": [
      "r430",
      "r483",
      "r612",
      "r613",
      "r650",
      "r777",
      "r779",
      "r782"
     ]
    },
    "us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "WeightedAverageNumberDilutedSharesOutstandingAdjustment",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 0.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Dilutive effect of equity compensation plans (in shares)",
        "documentation": "The sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation."
       }
      }
     },
     "auth_ref": [
      "r717"
     ]
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details": {
       "parentTag": null,
       "weight": null,
       "order": null,
       "root": true
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
        "terseLabel": "Diluted (in shares)",
        "totalLabel": "Weighted average common shares outstanding assuming full dilution (in shares)",
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period."
       }
      }
     },
     "auth_ref": [
      "r213",
      "r221"
     ]
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "xbrltype": "sharesItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "calculation": {
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details": {
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0,
       "order": 1.0
      }
     },
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited",
      "http://investors.permapipe.com/20240731/role/statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic",
        "terseLabel": "Basic (in shares)",
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period."
       }
      }
     },
     "auth_ref": [
      "r212",
      "r221"
     ]
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": {
     "xbrltype": "stringItemType",
     "nsuri": "http://fasb.org/us-gaap/2024",
     "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-consolidated-statements-of-operations-unaudited"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted average common shares outstanding"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock": {
     "xbrltype": "textBlockItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock",
     "presentation": [
      "http://investors.permapipe.com/20240731/role/statement-note-11-leases-tables"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted-average Lease Terms and Discount Rates [Table Text Block]",
        "documentation": "Tabular disclosure of weighted-average lease terms and discount rates."
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-lease-costs-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-lease-costs-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases - Lease Costs (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-maturities-of-lease-liabilities-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-maturities-of-lease-liabilities-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases - Maturities of Lease Liabilities (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-12-restricted-cash-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-12-restricted-cash-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Restricted Cash"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-4-revenue-recognition-revenues-by-revenue-class-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-4-revenue-recognition-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-4-revenue-recognition-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Revenue Recognition"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-5-inventories-schedule-of-inventory-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-5-inventories-schedule-of-inventory-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Inventories - Schedule of Inventory (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-5-inventories-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-5-inventories-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Inventories"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-7-impairment-of-longlived-assets-goodwill-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-7-impairment-of-longlived-assets-goodwill-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Impairment of Long-lived Assets - Goodwill (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-7-impairment-of-longlived-assets-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-7-impairment-of-longlived-assets-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Impairment of Long-lived Assets"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-8-stockbased-compensation-restricted-stock-activity-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Stock-based Compensation - Restricted Stock Activity (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-8-stockbased-compensation-stock-option-activity-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-8-stockbased-compensation-stock-option-activity-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Stock-based Compensation - Stock Option Activity (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-8-stockbased-compensation-stockbased-compensation-expense-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Stock-based Compensation - Stock-based Compensation Expense (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-8-stockbased-compensation-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-8-stockbased-compensation-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Stock-based Compensation"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-9-earnings-per-share-schedule-of-earnings-per-share-details",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Earnings Per Share - Schedule of Earnings Per Share (Details)"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-note-9-earnings-per-share-tables": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-note-9-earnings-per-share-tables",
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Earnings Per Share"
       }
      }
     },
     "auth_ref": []
    },
    "ppih_statement-statement-significant-accounting-policies-policies": {
     "xbrltype": "stringItemType",
     "nsuri": "http://investors.permapipe.com/20240731",
     "localname": "statement-statement-significant-accounting-policies-policies",
     "lang": {
      "en-us": {
       "role": {
        "label": "Significant Accounting Policies"
       }
      }
     },
     "auth_ref": []
    }
   }
  }
 },
 "std_ref": {
  "r0": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "SubTopic": "230",
   "Topic": "830",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1"
  },
  "r1": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A"
  },
  "r2": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10A",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "220",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-10A"
  },
  "r3": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-20"
  },
  "r4": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "21B",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-21B"
  },
  "r5": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r6": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r7": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "9",
   "Subparagraph": "(c)",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-9"
  },
  "r8": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "SubTopic": "10",
   "Topic": "360",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r9": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "SubTopic": "740",
   "Topic": "942",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477617/942-740-50-1"
  },
  "r10": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "SubTopic": "740",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478822/944-740-50-1"
  },
  "r11": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(2)",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r12": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(3)",
   "SubTopic": "10",
   "Topic": "810",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r13": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "SubTopic": "10",
   "Topic": "505",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-2"
  },
  "r14": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)",
   "SubTopic": "10",
   "Topic": "718",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r15": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "SubTopic": "10",
   "Topic": "718",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r16": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "SubTopic": "10",
   "Topic": "230",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-8"
  },
  "r17": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22))",
   "SubTopic": "10",
   "Topic": "210",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r18": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "210",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483489/210-10-50-1"
  },
  "r19": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14"
  },
  "r20": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-14A"
  },
  "r21": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "220",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-5"
  },
  "r22": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-12"
  },
  "r23": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-14"
  },
  "r24": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-4"
  },
  "r25": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-8"
  },
  "r26": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-2"
  },
  "r27": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-3"
  },
  "r28": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-4"
  },
  "r29": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "230",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-5"
  },
  "r30": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "260",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r31": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r32": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "275",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-20"
  },
  "r33": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "360",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r34": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "470",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481544/470-10-50-5"
  },
  "r35": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "480",
   "SubTopic": "10",
   "Subparagraph": "(12)(c)",
   "Section": "S99",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A"
  },
  "r36": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "480",
   "SubTopic": "10",
   "Subparagraph": "(16)(c)",
   "Paragraph": "3A",
   "Section": "S99",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A"
  },
  "r37": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "505",
   "SubTopic": "10",
   "Section": "S99",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1"
  },
  "r38": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "505",
   "SubTopic": "30",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481549/505-30-45-1"
  },
  "r39": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "505",
   "SubTopic": "30",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481520/505-30-50-4"
  },
  "r40": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r41": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r42": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481089/718-20-55-12"
  },
  "r43": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "718",
   "SubTopic": "20",
   "Section": "55",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481089/718-20-55-13"
  },
  "r44": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-2"
  },
  "r45": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479328/805-10-50-3"
  },
  "r46": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "805",
   "SubTopic": "20",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-1"
  },
  "r47": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "810",
   "SubTopic": "10",
   "Section": "45",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-21"
  },
  "r48": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "810",
   "SubTopic": "10",
   "Section": "55",
   "Paragraph": "4J",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481175/810-10-55-4J"
  },
  "r49": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "810",
   "SubTopic": "10",
   "Section": "55",
   "Paragraph": "4K",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481175/810-10-55-4K"
  },
  "r50": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4A"
  },
  "r51": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "815",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480434/815-10-50-4B"
  },
  "r52": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "825",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "20",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-20"
  },
  "r53": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Name": "Accounting Standards Codification",
   "Topic": "825",
   "SubTopic": "10",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-21"
  },
  "r54": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "205",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/205/tableOfContent"
  },
  "r55": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r56": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r57": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r58": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r59": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r60": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r61": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r62": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r63": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r64": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r65": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(26))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r66": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(28))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r67": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(29))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r68": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r69": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r70": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r71": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r72": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(31))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r73": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(32))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r74": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r75": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r76": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r77": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r78": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-11"
  },
  "r79": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r80": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r81": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r82": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r83": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r84": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r85": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "12",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-12"
  },
  "r86": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-13"
  },
  "r87": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-15"
  },
  "r88": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "15",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-15"
  },
  "r89": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24"
  },
  "r90": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-25"
  },
  "r91": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r92": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "275",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r93": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 4.E)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480418/310-10-S99-2"
  },
  "r94": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "330",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 5.BB)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480581/330-10-S99-2"
  },
  "r95": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-1"
  },
  "r96": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "470",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/470/tableOfContent"
  },
  "r97": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3A",
   "Subparagraph": "(14)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A"
  },
  "r98": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "480",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3A",
   "Subparagraph": "(15)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480244/480-10-S99-3A"
  },
  "r99": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1"
  },
  "r100": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/505-30/tableOfContent"
  },
  "r101": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r102": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r103": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r104": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/810/tableOfContent"
  },
  "r105": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "19",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-19"
  },
  "r106": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r107": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(1)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r108": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r109": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(13))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r110": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(15)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r111": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(16))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r112": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r113": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r114": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r115": {
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r116": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r117": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r118": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r119": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r120": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481962/310-10-50-7A"
  },
  "r121": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "740",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482603/740-30-50-2"
  },
  "r122": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "944",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479808/944-20-55-15"
  },
  "r123": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r124": {
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7"
  },
  "r125": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "SubTopic": "20",
   "Topic": "740",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482659/740-20-45-2"
  },
  "r126": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h))",
   "SubTopic": "10",
   "Topic": "235",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r127": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/250/tableOfContent"
  },
  "r128": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Accounting Standards Codification",
   "Topic": "606",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/606/tableOfContent"
  },
  "r129": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "04",
   "Paragraph": "a",
   "Publisher": "SEC"
  },
  "r130": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r131": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12A",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r132": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12B",
   "Paragraph": "Column A",
   "Subparagraph": "(a)",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r133": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "12B",
   "Paragraph": "Column A",
   "Subparagraph": "(b)",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r134": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "14",
   "Paragraph": "Column A",
   "Footnote": "2",
   "Publisher": "SEC"
  },
  "r135": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column A",
   "Publisher": "SEC"
  },
  "r136": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column B",
   "Publisher": "SEC"
  },
  "r137": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column C",
   "Publisher": "SEC"
  },
  "r138": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column D",
   "Publisher": "SEC"
  },
  "r139": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column E",
   "Publisher": "SEC"
  },
  "r140": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "17",
   "Paragraph": "Column F",
   "Publisher": "SEC"
  },
  "r141": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "12",
   "Subsection": "28",
   "Paragraph": "Column E",
   "Footnote": "4",
   "Publisher": "SEC"
  },
  "r142": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 11",
   "Section": "L",
   "Publisher": "SEC"
  },
  "r143": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 11",
   "Section": "M",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r144": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r145": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 4",
   "Publisher": "SEC"
  },
  "r146": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-6"
  },
  "r147": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-6"
  },
  "r148": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "105",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479343/105-10-65-7"
  },
  "r149": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "205",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483499/205-20-50-7"
  },
  "r150": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r151": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-5"
  },
  "r152": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r153": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(13))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r154": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r155": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r156": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r157": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r158": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r159": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r160": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r161": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r162": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r163": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r164": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A"
  },
  "r165": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1A"
  },
  "r166": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B"
  },
  "r167": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482790/220-10-45-1B"
  },
  "r168": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4"
  },
  "r169": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5"
  },
  "r170": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6"
  },
  "r171": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r172": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r173": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r174": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r175": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.5-03(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483621/220-10-S99-2"
  },
  "r176": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-17"
  },
  "r177": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-2"
  },
  "r178": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-24"
  },
  "r179": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-25"
  },
  "r180": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-2"
  },
  "r181": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-2A"
  },
  "r182": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-8"
  },
  "r183": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r184": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r185": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r186": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(k)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r187": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(k)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r188": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-04(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-3"
  },
  "r189": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23"
  },
  "r190": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24"
  },
  "r191": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5"
  },
  "r192": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r193": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r194": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r195": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r196": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r197": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r198": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r199": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r200": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-12"
  },
  "r201": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-3"
  },
  "r202": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-4"
  },
  "r203": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6"
  },
  "r204": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7"
  },
  "r205": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7"
  },
  "r206": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-7"
  },
  "r207": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-8"
  },
  "r208": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-9"
  },
  "r209": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "5",
   "Subparagraph": "(SAB Topic 11.M.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480530/250-10-S99-5"
  },
  "r210": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480530/250-10-S99-6"
  },
  "r211": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/260/tableOfContent"
  },
  "r212": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-10"
  },
  "r213": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "16",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-16"
  },
  "r214": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-2"
  },
  "r215": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-22"
  },
  "r216": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-23"
  },
  "r217": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-28A"
  },
  "r218": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B"
  },
  "r219": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "60B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-60B"
  },
  "r220": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482689/260-10-45-7"
  },
  "r221": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r222": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r223": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-2"
  },
  "r224": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-3"
  },
  "r225": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-15"
  },
  "r226": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "270",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1"
  },
  "r227": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "272",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483014/272-10-45-1"
  },
  "r228": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/280/tableOfContent"
  },
  "r229": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-15"
  },
  "r230": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-21"
  },
  "r231": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-21"
  },
  "r232": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r233": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r234": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r235": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r236": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r237": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "26",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26"
  },
  "r238": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "26B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26B"
  },
  "r239": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "26C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-26C"
  },
  "r240": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r241": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r242": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-31"
  },
  "r243": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r244": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(ee)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r245": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r246": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "34",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-34"
  },
  "r247": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "40",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-40"
  },
  "r248": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41"
  },
  "r249": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "41",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-41"
  },
  "r250": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "42",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-42"
  },
  "r251": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476173/280-10-65-1"
  },
  "r252": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-13"
  },
  "r253": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481962/310-10-50-4"
  },
  "r254": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3"
  },
  "r255": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r256": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r257": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r258": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r259": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "4",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-4"
  },
  "r260": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "5",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479654/326-10-65-5"
  },
  "r261": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479344/326-20-45-1"
  },
  "r262": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r263": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r264": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-13"
  },
  "r265": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-14"
  },
  "r266": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479319/326-20-50-5"
  },
  "r267": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "330",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/330/tableOfContent"
  },
  "r268": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482598/350-20-45-1"
  },
  "r269": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r270": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r271": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r272": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r273": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r274": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482665/350-30-50-1"
  },
  "r275": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "350",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476166/350-60-65-1"
  },
  "r276": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r277": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r278": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r279": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r280": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r281": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r282": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-4"
  },
  "r283": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9"
  },
  "r284": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r285": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r286": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481544/470-10-50-6"
  },
  "r287": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481544/470-10-50-6"
  },
  "r288": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r289": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r290": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r291": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r292": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r293": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r294": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r295": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r296": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r297": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r298": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r299": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r300": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r301": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r302": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r303": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r304": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r305": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r306": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1C"
  },
  "r307": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1C"
  },
  "r308": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1C",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1C"
  },
  "r309": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1D"
  },
  "r310": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1D"
  },
  "r311": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1D"
  },
  "r312": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1E"
  },
  "r313": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1E"
  },
  "r314": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1E"
  },
  "r315": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1E",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1E"
  },
  "r316": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1F"
  },
  "r317": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1F"
  },
  "r318": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1F"
  },
  "r319": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1F",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1F"
  },
  "r320": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1I"
  },
  "r321": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1I"
  },
  "r322": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1I",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1I"
  },
  "r323": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-6"
  },
  "r324": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.3-04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480008/505-10-S99-1"
  },
  "r325": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479837/606-10-45-1"
  },
  "r326": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479837/606-10-45-2"
  },
  "r327": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479837/606-10-45-3"
  },
  "r328": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-10"
  },
  "r329": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r330": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r331": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r332": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r333": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-12"
  },
  "r334": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-13"
  },
  "r335": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "15",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-15"
  },
  "r336": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-4"
  },
  "r337": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5"
  },
  "r338": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-8"
  },
  "r339": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-9"
  },
  "r340": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1"
  },
  "r341": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(n)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480506/715-20-50-1"
  },
  "r342": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-5"
  },
  "r343": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(f)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-5"
  },
  "r344": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/718/tableOfContent"
  },
  "r345": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480483/718-10-35-2"
  },
  "r346": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480454/718-10-45-1"
  },
  "r347": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r348": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r349": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r350": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r351": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r352": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r353": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r354": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r355": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r356": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r357": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r358": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r359": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r360": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r361": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r362": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r363": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r364": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r365": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r366": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r367": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r368": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r369": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r370": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r371": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r372": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r373": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)(v)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r374": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r375": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r376": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r377": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r378": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(l)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r379": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 14.F)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479830/718-10-S99-1"
  },
  "r380": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "720",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483359/720-20-50-1"
  },
  "r381": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/740/tableOfContent"
  },
  "r382": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "25",
   "Paragraph": "3",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482620/740-10-25-3"
  },
  "r383": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-4"
  },
  "r384": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482525/740-10-45-6"
  },
  "r385": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-10"
  },
  "r386": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12"
  },
  "r387": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12B"
  },
  "r388": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "12C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-12C"
  },
  "r389": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-14"
  },
  "r390": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "17",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-17"
  },
  "r391": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "21",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-21"
  },
  "r392": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-22"
  },
  "r393": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "23",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482685/740-10-50-23"
  },
  "r394": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8"
  },
  "r395": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(d)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482615/740-10-65-8"
  },
  "r396": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.5.Q1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1"
  },
  "r397": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-1"
  },
  "r398": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SAB Topic 11.C)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479360/740-10-S99-2"
  },
  "r399": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "270",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477891/740-270-50-1"
  },
  "r400": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482603/740-30-50-2"
  },
  "r401": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r402": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r403": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r404": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r405": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r406": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r407": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "740",
   "SubTopic": "323",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478666/740-323-65-2"
  },
  "r408": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479907/805-20-50-5"
  },
  "r409": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1"
  },
  "r410": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "805",
   "SubTopic": "60",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147476176/805-60-65-1"
  },
  "r411": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "19",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-19"
  },
  "r412": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25"
  },
  "r413": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "25",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481231/810-10-45-25"
  },
  "r414": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r415": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-1A"
  },
  "r416": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(bb)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3"
  },
  "r417": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481203/810-10-50-3"
  },
  "r418": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r419": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r420": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r421": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r422": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(h)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r423": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(i)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r424": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "6",
   "Subparagraph": "(i)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480528/815-20-65-6"
  },
  "r425": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r426": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r427": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r428": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r429": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r430": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r431": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r432": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r433": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r434": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2E"
  },
  "r435": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r436": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r437": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r438": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r439": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6A",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-6A"
  },
  "r440": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28"
  },
  "r441": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "230",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477401/830-230-45-1"
  },
  "r442": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "17",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-17"
  },
  "r443": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r444": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r445": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r446": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "20",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481694/830-30-45-20"
  },
  "r447": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "830",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481674/830-30-50-1"
  },
  "r448": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482925/835-30-45-2"
  },
  "r449": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482900/835-30-50-1"
  },
  "r450": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "5",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479832/842-10-65-5"
  },
  "r451": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479832/842-10-65-8"
  },
  "r452": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "8",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479832/842-10-65-8"
  },
  "r453": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "35",
   "Paragraph": "12A",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479165/842-20-35-12A"
  },
  "r454": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1"
  },
  "r455": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-1"
  },
  "r456": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-4"
  },
  "r457": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-5"
  },
  "r458": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-5"
  },
  "r459": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-5"
  },
  "r460": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r461": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r462": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r463": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r464": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r465": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r466": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r467": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r468": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(g)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r469": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-6"
  },
  "r470": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-7A"
  },
  "r471": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-7A"
  },
  "r472": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-1"
  },
  "r473": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)(iii)(01)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2"
  },
  "r474": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2"
  },
  "r475": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2"
  },
  "r476": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "848",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(d)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483550/848-10-65-2"
  },
  "r477": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483326/850-10-50-1"
  },
  "r478": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483326/850-10-50-1"
  },
  "r479": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483326/850-10-50-2"
  },
  "r480": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483326/850-10-50-3"
  },
  "r481": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481435/852-10-45-14"
  },
  "r482": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r483": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "860",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481420/860-30-50-7"
  },
  "r484": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "910",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482546/910-10-50-6"
  },
  "r485": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "924",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 11.L)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479941/924-10-S99-1"
  },
  "r486": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "926",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483194/926-20-65-2"
  },
  "r487": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "926",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483194/926-20-65-2"
  },
  "r488": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "926",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483194/926-20-65-2"
  },
  "r489": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "940",
   "SubTopic": "820",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478119/940-820-50-1"
  },
  "r490": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478546/942-210-S99-1"
  },
  "r491": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(10))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r492": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(24))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r493": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r494": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(26))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r495": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-04(27))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478524/942-220-S99-1"
  },
  "r496": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477314/942-235-S99-1"
  },
  "r497": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "942",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478451/942-360-50-1"
  },
  "r498": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r499": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r500": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r501": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r502": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r503": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r504": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r505": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r506": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r507": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r508": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r509": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r510": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(11))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r511": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(16))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r512": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r513": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r514": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r515": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(20))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r516": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(21))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r517": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(22))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r518": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(23))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r519": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-04(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477250/944-220-S99-1"
  },
  "r520": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column A))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r521": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column B))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r522": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column C))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r523": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column D))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r524": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column E))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r525": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "235",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-17(Column F))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477965/944-235-S99-2"
  },
  "r526": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4E"
  },
  "r527": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r528": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r529": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r530": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r531": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(f)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r532": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r533": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r534": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(ii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r535": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(iii)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r536": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(g)(2)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r537": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(h)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r538": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "2",
   "Subparagraph": "(h)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480016/944-40-65-2"
  },
  "r539": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.W.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479583/944-40-S99-1"
  },
  "r540": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "944",
   "SubTopic": "825",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477351/944-825-50-1B"
  },
  "r541": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-1"
  },
  "r542": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-2"
  },
  "r543": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480424/946-10-50-3"
  },
  "r544": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479886/946-10-S99-3"
  },
  "r545": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-03(i)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479886/946-10-S99-3"
  },
  "r546": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-11"
  },
  "r547": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480990/946-20-50-13"
  },
  "r548": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-3"
  },
  "r549": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4"
  },
  "r550": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477796/946-210-45-4"
  },
  "r551": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r552": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r553": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r554": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r555": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r556": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(12)(b)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r557": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r558": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(13)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r559": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(14))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r560": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(15))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r561": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(16)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r562": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r563": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(19))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r564": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r565": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(2)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r566": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r567": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r568": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(3)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r569": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(5)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r570": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r571": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r572": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r573": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(6)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r574": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(8))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r575": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r576": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(c))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r577": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r578": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(9)(e))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r579": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2"
  },
  "r580": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.6-05(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-2"
  },
  "r581": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "3",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-3"
  },
  "r582": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "7",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479105/946-220-45-7"
  },
  "r583": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r584": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(2)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r585": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r586": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r587": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r588": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r589": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r590": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(a)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r591": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r592": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r593": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r594": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r595": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r596": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(7)(c)(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r597": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-07(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-1"
  },
  "r598": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(1)(d))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r599": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r600": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r601": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r602": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477802/946-310-45-1"
  },
  "r603": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1"
  },
  "r604": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2"
  },
  "r605": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r606": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r607": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6"
  },
  "r608": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "946",
   "SubTopic": "505",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478448/946-505-50-2"
  },
  "r609": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479196/954-310-45-1"
  },
  "r610": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "954",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478785/954-310-50-2"
  },
  "r611": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "970",
   "SubTopic": "360",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-28(Column E)(Footnote 4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478979/970-360-S99-1"
  },
  "r612": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "976",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477332/976-310-50-1"
  },
  "r613": {
   "role": "http://www.xbrl.org/2003/role/disclosureRef",
   "Topic": "978",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479230/978-310-50-1"
  },
  "r614": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "13H",
   "Subparagraph": "(a)",
   "SubTopic": "40",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-13H"
  },
  "r615": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r616": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-1"
  },
  "r617": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "8",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483467/210-10-45-8"
  },
  "r618": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "52",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482635/260-10-55-52"
  },
  "r619": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r620": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "31",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-31"
  },
  "r621": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "47",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47"
  },
  "r622": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "47",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47"
  },
  "r623": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "47",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-47"
  },
  "r624": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "48",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-48"
  },
  "r625": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "49",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-49"
  },
  "r626": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "54",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54"
  },
  "r627": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "54",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54"
  },
  "r628": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "54",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482785/280-10-55-54"
  },
  "r629": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481933/310-10-55-12A"
  },
  "r630": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "326",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "80",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479294/326-20-55-80"
  },
  "r631": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482548/350-20-55-24"
  },
  "r632": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r633": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69B",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69B"
  },
  "r634": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69C"
  },
  "r635": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69E"
  },
  "r636": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "69F",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481568/470-20-55-69F"
  },
  "r637": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "505",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "13",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481112/505-10-50-13"
  },
  "r638": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r639": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "91",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479777/606-10-55-91"
  },
  "r640": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-11"
  },
  "r641": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480576/715-80-50-6"
  },
  "r642": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "715",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480547/715-80-55-8"
  },
  "r643": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r644": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "740",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "231",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482663/740-10-55-231"
  },
  "r645": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "4J",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481175/810-10-55-4J"
  },
  "r646": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "810",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "4K",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481175/810-10-55-4K"
  },
  "r647": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "100",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100"
  },
  "r648": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "100",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100"
  },
  "r649": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "100",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-100"
  },
  "r650": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "103",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-103"
  },
  "r651": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r652": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r653": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "107",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482078/820-10-55-107"
  },
  "r654": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482949/835-30-55-8"
  },
  "r655": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "53",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479589/842-20-55-53"
  },
  "r656": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481372/852-10-55-10"
  },
  "r657": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479401/944-30-55-2"
  },
  "r658": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-29F"
  },
  "r659": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "9C",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9C"
  },
  "r660": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "9E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480046/944-40-55-9E"
  },
  "r661": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480078/944-80-55-18"
  },
  "r662": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-1"
  },
  "r663": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478795/946-210-50-6"
  },
  "r664": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477439/946-210-55-1"
  },
  "r665": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477802/946-310-45-1"
  },
  "r666": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.12-12(Column A)(Footnote 2)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-1"
  },
  "r667": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "2",
   "Subparagraph": "(SX 210.12-12A(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-2"
  },
  "r668": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.12-12B(Column A)(Footnote 1)(a))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-3"
  },
  "r669": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "320",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "6",
   "Subparagraph": "(SX 210.12-14(Column A)(Footnote 2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477271/946-320-S99-6"
  },
  "r670": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-10"
  },
  "r671": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "11",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-11"
  },
  "r672": {
   "role": "http://www.xbrl.org/2003/role/exampleRef",
   "Topic": "946",
   "SubTopic": "830",
   "Name": "Accounting Standards Codification",
   "Section": "55",
   "Paragraph": "12",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479168/946-830-55-12"
  },
  "r673": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b"
  },
  "r674": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r675": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Exchange Act",
   "Number": "240",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r676": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Form 10-Q",
   "Number": "240",
   "Section": "308",
   "Subsection": "a"
  },
  "r677": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r678": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a"
  },
  "r679": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-K",
   "Number": "229",
   "Section": "408",
   "Subsection": "a",
   "Paragraph": "1"
  },
  "r680": {
   "role": "http://www.xbrl.org/2003/role/presentationRef",
   "Publisher": "SEC",
   "Name": "Regulation S-T",
   "Number": "232",
   "Section": "405"
  },
  "r681": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-10"
  },
  "r682": {
   "role": "http://www.xbrl.org/2003/role/recommendedDisclosureRef",
   "Topic": "855",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483399/855-10-50-3"
  },
  "r683": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(2)",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r684": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)(3)",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-1"
  },
  "r685": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(a)",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r686": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "11",
   "Subparagraph": "(b)",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-11"
  },
  "r687": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "SubTopic": "10",
   "Topic": "275",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482861/275-10-50-18"
  },
  "r688": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "SubTopic": "825",
   "Topic": "944",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477351/944-825-50-1B"
  },
  "r689": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-3"
  },
  "r690": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "SubTopic": "20",
   "Topic": "842",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-3"
  },
  "r691": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-8"
  },
  "r692": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "SubTopic": "10",
   "Topic": "250",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-9"
  },
  "r693": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "a",
   "Subparagraph": "(4)(i)",
   "Publisher": "SEC"
  },
  "r694": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "01",
   "Paragraph": "a",
   "Subparagraph": "(4)(iv)",
   "Publisher": "SEC"
  },
  "r695": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Section": "13",
   "Subsection": "02",
   "Paragraph": "a",
   "Subparagraph": "(4)(iv)",
   "Publisher": "SEC"
  },
  "r696": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Name": "Staff Accounting Bulletin (SAB)",
   "Number": "Topic 5",
   "Section": "Y",
   "Paragraph": "Question 2",
   "Publisher": "SEC"
  },
  "r697": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r698": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(1))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r699": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r700": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6)(a)(4))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r701": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(6))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r702": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "210",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.5-02(9))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480566/210-10-S99-1"
  },
  "r703": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-4"
  },
  "r704": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-5"
  },
  "r705": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "220",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482765/220-10-50-6"
  },
  "r706": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "14",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-14"
  },
  "r707": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r708": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "28",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482740/230-10-45-28"
  },
  "r709": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "230",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "8",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482913/230-10-50-8"
  },
  "r710": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(f))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r711": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "235",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480678/235-10-S99-1"
  },
  "r712": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "23",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-23"
  },
  "r713": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "24",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-24"
  },
  "r714": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483421/250-10-45-5"
  },
  "r715": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-4"
  },
  "r716": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "250",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483443/250-10-50-6"
  },
  "r717": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "260",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482662/260-10-50-1"
  },
  "r718": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "270",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482964/270-10-50-1"
  },
  "r719": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "18",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-18"
  },
  "r720": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "22",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-22"
  },
  "r721": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "30",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-30"
  },
  "r722": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(ee)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r723": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "32",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-32"
  },
  "r724": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "280",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "34",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482810/280-10-50-34"
  },
  "r725": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/310-10/tableOfContent"
  },
  "r726": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "310",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481990/310-10-45-2"
  },
  "r727": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "323",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481687/323-10-50-3"
  },
  "r728": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r729": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r730": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r731": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r732": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r733": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r734": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r735": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(g)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r736": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(h)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1"
  },
  "r737": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-1A"
  },
  "r738": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "350",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482573/350-20-50-2"
  },
  "r739": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482130/360-10-45-5"
  },
  "r740": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "360",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482099/360-10-50-3"
  },
  "r741": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r742": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r743": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "405",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Subparagraph": "(e)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477092/405-40-50-1"
  },
  "r744": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "410",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "10",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481931/410-30-50-10"
  },
  "r745": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "9",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483076/450-20-50-9"
  },
  "r746": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "450",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480102/450-20-S99-1"
  },
  "r747": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481544/470-10-50-6"
  },
  "r748": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481544/470-10-50-6"
  },
  "r749": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r750": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r751": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r752": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1A",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1A"
  },
  "r753": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1B",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480097/470-10-S99-1B"
  },
  "r754": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1B",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1B"
  },
  "r755": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "470",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1D",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481139/470-20-50-1D"
  },
  "r756": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "505",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481520/505-30-50-4"
  },
  "r757": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "606",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479806/606-10-50-5"
  },
  "r758": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "718",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)(1)(iv)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480429/718-10-50-2"
  },
  "r759": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "815",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "65",
   "Paragraph": "1",
   "Subparagraph": "(e)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480175/815-40-65-1"
  },
  "r760": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r761": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r762": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r763": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(bbb)(2)(i)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2"
  },
  "r764": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "820",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2E",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482106/820-10-50-2E"
  },
  "r765": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "825",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "28",
   "Subparagraph": "(f)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482907/825-10-50-28"
  },
  "r766": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482925/835-30-45-1A"
  },
  "r767": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "2",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482925/835-30-45-2"
  },
  "r768": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "835",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "1",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147482900/835-30-50-1"
  },
  "r769": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479041/842-20-45-4"
  },
  "r770": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-3"
  },
  "r771": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-3"
  },
  "r772": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-4"
  },
  "r773": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "842",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478964/842-20-50-6"
  },
  "r774": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "850",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147483326/850-10-50-3"
  },
  "r775": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7"
  },
  "r776": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "852",
   "SubTopic": "10",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481404/852-10-50-7"
  },
  "r777": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r778": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r779": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(c)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-3"
  },
  "r780": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r781": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r782": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "860",
   "SubTopic": "20",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147481326/860-20-50-4"
  },
  "r783": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(16)(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r784": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(17))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r785": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(2))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r786": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(3))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r787": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.7-03(a)(5))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478777/944-210-S99-1"
  },
  "r788": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "30",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479432/944-30-50-2B"
  },
  "r789": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477363/944-310-50-3"
  },
  "r790": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "310",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "3",
   "Subparagraph": "(a)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147477363/944-310-50-3"
  },
  "r791": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B"
  },
  "r792": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4B"
  },
  "r793": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4C"
  },
  "r794": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4D",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4D"
  },
  "r795": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "4G",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-4G"
  },
  "r796": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r797": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r798": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r799": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "5",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-5"
  },
  "r800": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r801": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r802": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r803": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r804": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(4)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r805": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(5)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r806": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(b)(6)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r807": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "6",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-6"
  },
  "r808": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r809": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(1)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r810": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(2)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r811": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(b)(3)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r812": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r813": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7A",
   "Subparagraph": "(d)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7A"
  },
  "r814": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r815": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r816": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "40",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "7B",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480081/944-40-50-7B"
  },
  "r817": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(b)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2"
  },
  "r818": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "944",
   "SubTopic": "80",
   "Name": "Accounting Standards Codification",
   "Section": "50",
   "Paragraph": "2",
   "Subparagraph": "(c)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147480109/944-80-50-2"
  },
  "r819": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "205",
   "Name": "Accounting Standards Codification",
   "Section": "45",
   "Paragraph": "4",
   "Subparagraph": "(a)",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147478009/946-205-45-4"
  },
  "r820": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "210",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "1",
   "Subparagraph": "(SX 210.6-04(18))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479170/946-210-S99-1"
  },
  "r821": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(4)(b))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  },
  "r822": {
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef",
   "Topic": "946",
   "SubTopic": "220",
   "Name": "Accounting Standards Codification",
   "Section": "S99",
   "Paragraph": "3",
   "Subparagraph": "(SX 210.6-09(7))",
   "Publisher": "FASB",
   "URI": "https://asc.fasb.org/1943274/2147479134/946-220-S99-3"
  }
 }
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>76
<FILENAME>0001437749-24-028925-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001437749-24-028925-xbrl.zip
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
M3^DV]W["U(XWF]HK)[I;#%\]1:Y,= 2'D4J9O]*9,KB<=. ^5YE,:FG3*<%
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
M*B<EUE4LDE"_7AEH=<WD:HJL'N .Q 6^QUPY4&>7A>V/;:1O$CA$G$0NDT^
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
MU%J.;2NO?1RXJ3YHY;5R"[5R#/*GXBRGU3->#KD&[4-97HL7^@*-$>3TN.+
MIS4'P^P54SX?E;^4FUPI?E%7?D^7QM,8BXQ@@"5.>-X)@XAV)+GP(Z3_ZHVB
MJRD$!;<P#,L8X8[.1C3HR \$GW>J;S//P_=KT@9%!!)8&*'X+X$?S<\[B#'[
MQ(!/'2O^(*D;!O'7D3^Y_HPPWH=[:%C'BLO&G\\:QF6C^$.,^6\&UUOCNA(,
MX@WN;QY[[K\C$6*-"R(=B\'T_3@E3?P]K)*]6S3P(SV2\T"JLACZ2VL>"'/[
M_!*Z/4QI'ZE\@T(>L(.WAWZQ6_6SHZ12IQAMLXF?XBLSGT,W#Q9E+R6YS?..
M$U#0KK'STFWR0_\*AL'4_)6KKVB 2T=J_1F'H9F'&_6&2\*)RPB_\X-P E-*
M'$:+=%];HI4]_!+N!L2[(/S/^_'U7XMY>#FB.",N&59;K!6]]=*? 25DL-,7
M(J+N-^[20/[] (P07VEX/Y;KJN(;#$ W?C D+W^P<(H?89-?$4K,W;Z=]O9*
MF=[M\_AMEOMQVAW!IJ7Y:TJTK+>6S9*?CD1$ON'6^[E'81)TB>,FL%_T>,@<
M-B?RFN=1![6.'SLEV[=HIKF#4O@,](.<$?=<98/2WLJBK04='J3^C 97=.X+
M%HKDVYS=S+KJ^S^D@^K8=$4=G+;1/D^^GLTG,E1,DTV+Q(C4Q@W*MQ7&6A,P
M^-G0ZD*573/\$9/7_ACF+W+_?IW1J\7;QN[* .3*=R(LT>/N-0RKX2*W*I29
MO;Y,<ULQ2P:QM.F@ZKI_<?]8#*"*EUH1+.%F,^HF+\)F>I8NMK7C7(,:,WP
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
MATC_S1;Z?()K)DRW#SODU&&/%44=*7&+!ZN]E 1U+P8?VA]4V&KB'W%'CN9
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
MRU30-"YP$L6(+4UIL;(!Y]2X09) CP,]UM"<<ZXPPISE/R[_+%-N8 D#MV;
M*QB0<?U _@-M#K0YT.9 FP-M#K3Y&%O+I70@"OUKA!'-TWS!(EXK8DM$]YT(
M)-&Z)ES3Z&99 I$.1/JDJ>;E=@#<8GHOU+^)^C>6#T0Y$.5 E -1#D0Y$&6;
M1!FX\ Q$C'^,1+6<5TOQ_M4 &7%M7==46"-$X,"! Y\T![[>:OX&[@&'5 E,
M.##AP(0#$PY,.#!AFTP8OO:X)\,)B4OY"\J3"$N=X\1R3GC=XM5!3ATS!C;D
MD"8;2=0+9Y[PQR="A*L,+6K88.WW/?+3<S'74(S.2?)R!5=]W:<T):4".Q\4
M*/LG1O0R3R[XRZN3K*%HCU)>;+6H>C8W9E.27/'/ZMA]8UEG<HH^@DGYJJ0#
M&:\/HU#%?J'%W4I;QWTA11U(66F;>@AIRSF0[_^6B!:89IL[O";TI:4)*.E
MQ@>*.&D3;Z]12%51%U+R1^@D._JZ=P_,)$DH9FS[0XS.]TIWC*:L*SG%"C>E
M#^1)[312EG0EXRWA%";[?^E:L4HW%W8EJ>3L4WI+R6-:):G1RJHHWKNTYWQ0
M4)1=<WKWY?_@C5),1;G^Y2.K%<GO"VX-2$<YFY:%3(24YG6D$5ZI?\DK6E;-
M@/S!X@W74@Y(<3^\Q7Y)X]!W73WV<H7I@K^:#Y0\%4NN9&N4JT>,MG3OLEZE
M&?Y4'EOIKP1\7<2)5/2<SW0+;O!K!7M5JG?9KO.84#[X)$&5T_&Y.!5--]JE
M!E3+@>R<$Z*X2!\Q9ZYH.Y=HA-85[UW:.[Q(A4,H+SZAE;IKZXOU+MW]$F=9
MT^"N*]2_9"N496<EX^20J1>2VE*]R_: OEPGPH\T3ZL,? V33T/YD]J'!,A$
MA$MD27+UG*TJTJ-4]S@N*>^$]]_-'M*BUK97%7$@U>676":P4,PANF(]2L=-
M7\$R[S>K&<EJQ*K]?K ]P*]FCPSDAPH[96W>5,\[96!?)S'Q-CI^C>I=,U-X
M &L<B.T[3['I:!\0VO?>0=-L9@$Q_> =)MB^$Q#>C][! ^Y7 ?']Y#D^Q4X7
M$-W/WJ)[[? '0OK%6TC:+2 @NE^]1:?9@H,NVOW'NK361NW&&!2?KZQ$Y5"$
MXO*5D1CX^*!0_6,H!FX9*$C_* MPKQ4*T#_2 MJFA<+SC[/ MTRA&/UC+M M
M;"A"_XB,.I0.BLD_^J)WST)-<O^8B][!"\7E'V/1^&&AH/RC*\T^;R@V7_D)
M)$H"BM%7>@+9G85B])6A:+;XH=!\92>:_5<H-%])"2"D!0K1/U;2M+$/1>8?
M-S$-BCL@=770)B8Y(UF:B&L,HQG*Q+5^$5MB7+ HKN8_D=,H)4E4YJA,4E%N
MC<3G2UQP4S4S.*9N\6$.#^Q8ESH<A!\HF' <!^$G64:>A))=$7I!REDQ+[/M
M12'L#L<X?12[JO619IW:<)L[]C IWB(ZI=*GD,C,S[O4' IL!C6'0E1-\Y.R
M6!*:_L5'>B,258UA$5PS5L*E?UYZ6,G5P>HF54+J!?>I%ZS+^4 Q8B7=R%>]
M?>ORA2M$;BP?@L9"8H40+C9X8H7^79MFD#IP+JB%ZQEB8R8&Q-F_#[0U3CU/
M ^+KW__9$5\=DP-BZ]_OV1$;P/DR<#R9&4 @77'O6JINF(EFB*4L(O-HS67B
MGQLF<(&TXCK)(4B<X.4)7IZ33G<XI0N4IW])U3_?^TC%9)DGMT?#8CJ_2G/.
MBU*4[6<T@TN"^GI,L.U#6L605C%8_Z=E_8>TBM9G#<.TBOVN5P/1^.^BV3:N
M(MJJ3$1WD4"&7![2E&M"#Y<IL/K ZD^:U=]7^K^/\X,3=8.:@7L'[AVX=^#>
M@7L'[FV3>QLO00/1Z>\CM-T8Y#QSMS-HR*.U;;@FT !A G,.S%D7]?AJI_SC
MLWGA98!C0W&GLI]50<'W(B98'$>3T^7KKH86'USV6@V&5QBK_-;&9+L(1BZ4
MR"TD<Q2D[(\SG,?+%:)_:-% JYT"%L_>SV8OGF:L0ZL-C45D:S&#\;+&L B$
M-&;*];K&>!$,.S)*3A=7F+Z23[N  VL%[YT1@NV60KXX\")V^6>)L@?R@6).
MV>G#$N6_?GN!-NP6L>*BU-.LSNT-CK[*:K2533/#&=7U"Y5VUC"L?7K(!IT;
M;PC*V2=N(3.1]@!/\F1:+#$]DACN7^_4EMO(("'7)SZQ5['.$\9PP;3S#*"&
M6Q\\XMUYAQ]Q7N)/N-#*KBT;=CK"3D?8Z? ."-@50\P='S[BA-AOI(6Q-!*L
M]2:W#K#6C>(C:C/^2CH2Q-'M6G:@^=YMBIF^L0;X+>PYK[9X78V ?O:&!QL)
ML%T([Y0?L J3%G:%EQIMAYUTTEM+1TXMZJV91]T[_04S#6)D87JIOWTPL4[:
M;.E@<;_:7+^QXK\BU]@(QT!-_/UCT>:6-I0/3**GJ0H6EP&$:NF<? AZ#$&/
M)QST:&%?8* PR!\B6I$:$31(%M4#=Y(!PR"U;;@.@P0($\(@0QCD28<@;.V4
M*SZE<0(AY?@]+98[_M>TRVE:/6RPA0VVL,$V3J=\8-6!5?O*JMNM0P,1Z9^B
M-.>%<%2@+X?$7T &75_9-77621$X<^#,)\V9KZ7J/Z O\&A 2)7 C0,W#MPX
M<./ C0,WMLF-X6O/0'SXYXCS5I12^0F91QG)%UGZB),(R0@00X8,;<XU9S:3
M*[#H4V;1KY58?/*O6Z%-MUR;SE&.$G13)+5G&4!EW>8#$!I\O5?O\R6B"\R:
M6#&PEML3ZMO4<I/XSS*M[J"7OU*L/]\$KG<:: 8]IU4GG2:!@[YT,'Z#X1@,
MQV X]G=JJ6'^(:T7D=&9R493LG=V%_SM$"..YI5OH ^M]2&",CAY@I/GA)T\
M1J;40'Z>7R(F;CV:(=YQ$2^]YNK;YGZAQG9<>W:  @67SBF[=+K[4)X031HR
M>]66&<B"G<[/CU3]#F?B.L%SP@HF;S0[$Z/A%FW$,&GT!%EJ-=CR1@@N^01)
M-AC+R^BF:]'AVMPIC>4=AZ[RKDMCKAY2'JWDVK)N_1%[+3[6\PFE*%]4MXJ<
M;5YINASVA[&?)[<9RC^AE=Z)U^>C0I_!'S6HKS3XZWQ@\\%?-QY_73W'(B[G
MU=$Z]C3\U#L+N]?72(Q9DU?.HT''@@_N0H_T!\!=@RLUN%*#*]62*]6J+V(@
M5^O[;[D2SO;PH!>W/Z_EVHU:^_C@-#UEIZDB#FZ2)%*]4'8_O;J;)/\N62'T
M1(ZX:?[ =6HZO^8S(>5:5B5_4P?*=6[, B"Y_YNB_".AQ0(ML$@ H9:XN;0-
MD; X)Y>=H?R/Z?SRS\VZ.)_A.Z25"U;%@G"7UV?3.[4@-5];>.@5H3A=\'G^
MD62/:;X0*V!](FQH<0M"W: \X33QK$RSA#^$7><W>(9RPO4V%YON6/.^3.M:
M$/=89>]QS!?1Y&QS>!S*RSE?=DO*Q;E"<9KQN4,M?^?&+ #ZQ&583E9\6HA1
M+I*WW"):I#J]@-6P$2W,64[*&*$;_72B*V=!C#N<XR>43>?[D7#.7U0J"23[
MS,0[NT=EDDXHFO%)[;Z<L93/;E3SXBTU:06<2H#+!9__]D_F[_<['9ZVK;B%
M8 6!0P ?TR3)\"5B?/'.CV5XWP8)M+5A(+52+VAKO4(R'_V^#'KYZ./Y'"!T
M0QT+XMWKR5'-US8>6JV_TT>N2.EB61S2,'/^)XBU1B"SJMVWFQ@MCK::^%\'
MRX;_\:^/Z$NZ*E>U BN_[U\J;E)KI:K[OG>I[H0SL\;^J_W.C33*'JKYUA^)
M[&\"-TAV'^.<3_7D<\[6.$[G*4YJ70R@LN.0UGT?[QQ8.Y$4(T5;KG<I?\=B
MUL7)A$_ 2*.MVG)N#W@AIG9%Z LYE;,B*#O;4W<CI[+@@/+J[Z_4%!V3S(,&
MWUS@60%/$M-0VKGDUSDK:"EW+=6:K2XXH+R-85Y-Q<<H^[":/OI@6"[/FC"4
M?:"D7+/K/,Y*X3058I*\2/.26S!K7*579\TOJ5MK7Q_R0;6W2I&R9VG'M[-,
M\N2P@73067:V,0*JF4'=/MQIO]Y2PH4H-B+(18"Y_+-,UQ)DTQ7F!C7]0"2D
MTHX+@YJG@RB$/@\?^FQ=SM^X!2L>+HPOS1!6%1M,5JTRJPN.15Z3L39TZ&T(
MA_<^'+[>PTL:7*T^(6C#)4B'!=M'[!KSG)B:PS[BTSC6B(DSRT=LR@64P)<M
M'W$Y-GB(9:O<IRYMWEP@1CL\HSUXU.1@]RXH73LED59!!5Z=F>@^0?MP#,BB
MANK-(>_T4[.P/+O'6+T'YZ4ZMEM33^129DW0AC?ZI[(N2&,4C%?Z!K6>?)CD
M.KP-=:24-Q!@$UK[0#4@4'\NLP8&I'@U(S33U]T[M'3:Q[O)I!O+[S3-G-[%
MSOTKK=+/1UJ<$O%*&5T>AO[1&\T;<K/6&Z6VY48AG<ZG>34:1NO3ZC0N?_)N
M7#:%H?DWAII<[L3N(4@O1TVWW8E.*ORS=RIL'/+BG4Z;[)B=X!K0WSZCYUX"
M(Y\V^-B\=_# 4[:M(Z9N'8P#]T#MB52WSA4W/0 Z,.W6-!\(>)=7;LDT=(,<
M?F[9+0&WB]YBS@;O9CZ ]UB9E,:[20P QBC5CW>3%<37W_%M]:]Z#7LO@-.:
M;DTAFY-)<\H:(+9?_,,&S>[5E?_.0L)(1PDC(><V#R#=)H)\'V48,6QZB?*K
M>LZ30=8+$-)!?HWI(&?EQ9*S1N$KNA%*H4GVJ"]J(R&?=$IM7>KY8I(G59@
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
MI(MJ+!&@G]&KW573F<.'LR\>;8'WKW'*18B8.=B]TCJ7>_K^G%;J2DN]T4G
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
MZVB= Q$^<YDWX"F^AM6V?4,^X+V6>\$=WJ>F 4_QM7N?@(9\P%OCX#?#J6G
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
M<!.,+FVZ/EPA%@5VBS:"X>E#I_6%!Y'[#L<X?132?,(%3'I=%=<8.%U(]E?
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
M8L1'CX)M00(4Y(&1&@>I@9 2"2FAN!>J@9/ 1G!VI*!E%8VSQK^BIR1:1<N
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
MBV>PBO6,[\A (D4]@@X>4#42"T85)I+2)>,Z9B>" ;9EXA!YN-;+]>(@L>#
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
M\Z-&8%#H2QQ3D/@V,6D1>27G7)@!M]P$">+_+]I>L%!]$]+5>*PQ<-"I:WM
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
M&?FWW[__0+9!2IZ!]HP$1;YF:?0O&I(_OI^]?_^^M(;^'_+C[*<?_T2B+"O
M6YJ$X/'+\D ^\PAR\I<BKI]Y_$$T^-/L_8<?Q9\.'X'\P4\I.M6T,=VY<.<?
M"?]99+EX-_' [B@,+HKI%YK+(J&?6,9_#V7Q;E/V'(4T/-]]S:"$:!TD/U_F
MT;,H)-#G6[%("NN7L0#)]J)J8 :7>5JA)@D%7SG@AM_#3R(Q][:$#C>-^U?E
M08W;CT_(IBPPEQ/L8\N0)Z]YK3_[=P_5%^,WDN.>W>XIC3W$]W%:A]OM^K^;
MA?X$[$9LP+K"==C:E&#)7MT*56EX3$Z@CCC<)4QM;',F2."^YRIUD=X&:5[^
M,%_^6D19!'>^U]$K#:6C7_PVI:'J$#FB)Z0 (BC:+[3Q"F:P(,KW;4E5ALHD
M$ F^6D5Q%.0T(V?PBS. [$5@Q\P6,S@%/C0FQ[I([W-()"O,^5N:BI78KSW[
MOARO2544W&K5^N0G%&O(XCA(,XC_D$K6NX[MG8=V?:O'W'$BF:5Y0QSY3WM1
MY#_\XXYF0!^LW/EK='R=TM%BH&BU]&1;A.[H,U_V7(C8BMRF$4L)YV\$X5%
MW6VA^2Y&,@WNN)*!2P;Y#[JEX+#-.#F0??F3!$G?JRP<L?-4&MIXY&.;N@BV
M41[$TDCD^&CZ3,-KEEX74&\#K$;PDO9O6L/Z&;^%Z=%SY?@?# QS%^!@](CK
M@7)/OY=[>@F,2&2D@B;2!$API$(WI>/40.EMW_@QD^+,#*C=7JVQV)JM1YH'
M1[WZVB!F9(]$,ZK:LN&@8G>+$=')0[O2Q'G;7MI+\5>,M.Q[L?[8!L+5LSQ:
M<FWU682R4"D0WJR'%@ZR'K:X3ULEZT5V5SCM;CPV8=5!I^ZR5;74-)U$W=T>
M9K=EL>K@H%4-\CEXC3;%1JE#6O^.T"('_=B6D)*8OXVDG6NLEQ5VISI*NJ>Z
M[>^8J6[V8WVJ)3&/4]W*-=;+"JM3_3<*I:9H.'_FZJ7#0NALAYCZUOYLBT!%
ME)14_<E"-SN9-H^LRL;B)>$GRG6T5;J@%"T0\G#4DW7+H"+GSV)4\8YI,,3J
MM-_*-]>+]%Z^N%8XH;N:(02@K3O;4E#2%"%G)5E?GNA.;C)=%KF0"\A440+(
ME(JAMRU>0D[[]"(FOM1&/V?9(';9]SJH+K&._X;U.+C0%$I_@Z=[JQ/>L4Z&
M./,T-..R;Y*<<I;FY5EUD=2IO16>AV$?(ST1>D2\>B969:R^1[_$P*E0E+'5
MY:\;*U:AAUK_/L:"=:&/&O:K'PW4SK5CV]6C)FK+J2/"C+[0O#L+QH OT3>A
MO13L!_-DN<R?QM=GM!$5LVF00N86R.A"Z"NW%S*X?.$+-A:_90DI(,P:$GS*
MU. RKY.GZS_]26(C..],7O>Z,@J_**O6*UHAY?"H-^LR!UM=5-(D6T[4B^BH
M>,@T&>-0))ZY/+)TUR4/ITW0PK#ORK8D5+1ZWZO8@(I(TJ.-UYK(MDPSTV'(
MR"1Q%Z+X0WP>)+\L5E>_[K;YQ2.%I!/JI'":GV"2P/5T;5U_2?($Z,/.*!"0
M=Q?G5]^*;"+X)&_&!S8ZJ1L?%.$G%!_I%G4%B&&8YUYY_XVEO]PDMRD#@ZI/
MC;<V'JO0#SJU?L?"B8$!N97D_*K+=G:V*<X.'CD3F?')>0WTA!2V-Y"0%V-I
M.!D6IF@5S65E)2_K:V0>7&/,=:_,X4V(V%/+"-%>A:[\8*Q2/^G8>O)!\ <$
M<<Q>^D.@;>MU-5?;='L/J]Q+T7641-F:AA\9"WLEJ+7Q6.DYZ-3^BT=)C#P!
M-;^2T\[--JGI8)%[B?F8LG[C\:#16 D1G;EZ@7%(=91+ (D;X12X+Q[%5WX%
M^G#2VP2YA2/N!?@N>/G,CV1I%,2]<MS6=JPX-_NT_G0A>"&;BIA?Z6AE99N0
MJ/GCW ,N<[F4Q7K[7>&JYB-]XL?=NE.%[?1Q2G'T6'Z28TGH$UP1#?6:EJ[^
MLE:T5V^_4DQ:W/[=_'*V(+XF</=&P[NZ5&Y/_O[^#Y"+0MVQ[65146XK'(Q9
M$B9'@CBWU\-IT)\1K8(%EM:'ALRPX>QSEYR&YF;2V>$[PJ:F&4S075"2YW1R
M(^:"F6.P,QF^K]Z'?HH2>@/%X!0RJFZ(E,'3#ET$4I:ADT"3"*)NPY<TN,GT
M6>0NM6?E>KMFZ27C9\]5$<_+37&OCGL*_&#ZP";C'$++>I;-"HS(91"6<&JC
MPD_23-1D,",<=B>U)WAZX^]T/L'*9$?7]LM%!"%M,V-G)#YPK0L17:8TC'(2
M,[C[@&"#?_OQPP_MR9+_[=]_^FDRN9*U)H]A9L2=25E V  4:-RR5%2EO*=/
M72_F^S_ FHC*CEUY(]0(,(<OD^/!7)H*\K"8]@"(WGAL&;K]DL.&LV]LS!>$
M!M_(DEWA(OFZC_FM;FF/%\+0SU"Q7_W=NXF9CDH,R'AH5T/#18!I#I'O7K$(
M&<_94>G?LC&GZ2%P;( $,BSO':;R#T6"U""&*.2;I$Q0I3*:NENC$^JW]FH_
M)WY%5D2)GT4)64K*GK+;=_.6#628&?U\)5YH+%;GY?N,TYL2S=8CM'%+KZZ4
M<,L+E1E42<!J7R-#0=PB3WH\XS81U9 FO7MT+10VD,4C%WK5[P.[/"U/VM$"
MLZ />W(22U8_+.-B$ ZL,VH$,TZZSX]@3U.:%9+!-%@W4FJO@C2!"R(1V]DF
MM*T-,#)[T)%MD3VE.%A>1^)%;"Z2(I=0+X!QZVN^$>5Y^?JA!^@]O$1IEU36
MSQV7[M5B4PC]L\C7-+W@*B>E:YIDT3.580RM+[70W^,=KWITK!\M%A<W9)[G
M:?182 <05]NW0>HMFRQ^)MAH]H[5]-7+\:ORX7BKME<U0FG\X\YLB\O5R>/X
MX4IT/&:<(CW%/DU312TA3(^%#B_JV?*7-8M#FF97OQ91ONL)*NG_ 'UQK^K8
M_@7^GO+O"!6T/5W?]_*6#6>8NYS,H*>_L*1.0WP0=*B0)[V/L#F:.SNW'GP$
MU,F[,E3TV[+TI9^DS'I<9CC6.9.PVQ3@Y+M;SN=\GH0@]EO81LYW#QQ#2SHD
MQ)=(6=.@8-T'P9*GLT\1U+=XX+^/P!84J6!\I%3"<)Z-8*>[+5/>4,HK2[XP
M+J-L&3/(G_= 7_-S3N\7U=ZI_R5V$^VG8'TWE1!(C8'L09"? 081.#Q%R V8
M C:"K_Y5(JR2UF2FB"]-J\0]!8\JT4>Z4PSO=92BBJ$.$SUPTS-:PB5SD*V[
MH^$ZVZ*3-;3T:?U57$V4>"MIVLU,-HA#(YTGGX(DY$)Y7D0QY#C(;I)/]#%(
M6/) DP32'72D6!KZ+<;5HDO#NDZ"$$?X_QH)W"R66&:D1H-/OF1OI*.S,/%C
MA4CS(5/!/@;+7P@_LR89O,]@"3"""WU"Y4\O4;X67\05RQZ[6>;!HSY8<MFH
M27+GAQ<%C$L]T>,4ZFR+]:^W]6D]%$.2*VM9^_&:=_*2#6+02(7>3'R\>(RC
M)['J,[46U_H H[H[.W:0[$,$L0OJI$$>KZ -CV>T5C[(STU8C<B#/M63(3:<
MD<XTYW40I:+2]OZ4F/6Y!K2^06K2SKZM+QY.G CJ#3] YM\1H,=PAN*BPU-7
M2.E&/#'A(X;H7B:"8*I7__):X")(TQV\#A5A",I#&;XK])EM.$G;XLJ1G#6@
MU+F=<9GV7(P/\6ID#XP<(B,5M!F1X*" LH1')#Y/9]P1LLE,3HBSE2W.Z/S_
M =(S/RZ)]V3- SP_.1S^HM%2L<2-](E<ZZ-HNWH:-@HDJH*Z6ZY@8KDYS9FL
MZ$+WI,51/#WT?I%LS5[$ 5X<\>M'\1"* 7\6U6#\%%8P(O?,RK2]#852YRWE
MML^694'\,67%EG\!MA#7HU%2T+#,0L&M;QOZ!PG!A[H:"/5-:+>!8W*N#*WS
MG'\:L? ^#]+<F@8](X_T*4H@'@S4IB3Y6V7E53(P]]H@1E+^6TT63G'7P6H[
M4YO4*!EX&WO:K1 -/M 4?$>75/ZW'OC5ZW(-E0>AZL+5:D65OF\_('SL:X/!
MOHF=;?"HG"MD!WQ'G P@7W]48A+7=MKJ^>VI8_PR-:601\J ,Y5<E<.,E'4$
M6EH@E5FC)U>:ID$2HP9&(48X^K3A6EIT;7/---CA.]>FO%4Z2*BHD.;A'9C-
MK=E"R%DB)6U$J,1*%L>+W.W$WK8M 4$5GE4%9J+91;NDL#^K:"^KW=GY;+.)
M<I$6BN^1%^+\\40Y-N6RU/@":T&K>[:?)Z0F+<RJ99.XIY*U_6QF"-XYDRQI
M*RU63?MID=BX?+%("2G)%A!9?[LJ((N']"5H4=&1R'^+>LX3/X;8% /F<&Y'
M1I;=T6<6/_/5_RE*:/:%I?EZON%'G&6@#B[3_0837];7M_U(\I(^$0!F1$ @
M)09\G)GY<8T.-8N2%4LWXG-PS^9!)/S=.8.L&"438D +3H4#-G@(1M.6.89B
MN+NGN8>O.#^I2V]UM,0^PCWMT=41I84TYBQB9 2H&MU CH \$J9YMV;K 7&'
M6+ !G/)]LF\IE3#L9-_1@?6J&9Y/]BV(#)[LC8S7U,F^?O4^T9-]EQ2BZH5,
M:Y5"#;=LS"KMZ,#L*FTAY'F5MB RN$J-C'?,*BTX#+ ,HPK(1%=HEP3VK]!>
M-CM\7TXA87&9]X,?$$5BD(.W1XJE.>!+]/OR7@JV%V,)H:H'*!T-3"1^6?I_
M2S9D"M@(OCKT!&<Y5 MHR\39V0;M[6WTY2(/-/BVX'FL+W]N&^N8%C^<R8 H
M_LL5YBI2:9Z6%LCY;_3D:EMOD,3LVZ,0(S9F00]LYUZ\EF2V;;*9!C^<R>MY
MD G_:V?6TO9&2*D][,RVX (U N3\9AM5<)#IL<69-%S2%87"'-)!\A"\-H(@
MU)6A-;]"RDM/[[8%J")/\N"5Q)Y#5G0YS9#L<V@JR6(O?XOR]461Y1Q:6@';
M*4TGC6_0IE1'W\XB1;M H ([#8WJL"CYP_!0KPI(<P']F=29_0]*5RQ%-0LX
MJ=#3A+JX&E#6#%(=@62H^1AYA7D1)$$8!<EGEN9/P1/]PA1;O&9KS+6ENE?K
M9Y62,JE($Z"-OZ@T.1*+5Y0!V53C36"\XFHF((]!\@LL,3&*8$8RR@__TI,<
MD)I5FR I5EPVBQ1ZX_\20NGA5E-#&-G >1F;=_WF?'&G7CTM?T;E6M]W8SU2
M!4CAE\,HI!;E'Y[V7FTB"+K)9+( <@ZROUAQ$X@+/)C7/JI:M,@'ZV/EV.1(
M+*714W)XX=^1&JF_.2HQDKI;ZYE=)&ER%+LR(BF2R;%87 2K<N#[>)6RM'&I
MTKGEY2-ODH: L:&<'G=:R=*\<5+A/^U/*?P'L-4R%D>A*(.0Y()Q+2F\=9H.
M7#I=7=KW\N[IDHJPCP3=6GQE0YCE7%I:\QOK-38D,6ZR&"MDQD<&8TWN=LC-
MF#S%BKVX:9W>2]O[?+=/H]FTNZ]+LUN]4X_N#+./HXG:%KW#\]W]_F"S3U-[
M@(Y4\/!V@$->.#PJ'IP)VX^"D\EI.WX),+-SZ>[]*LWAG>5B=2%,ND619WF0
MA'W9\W0_P[YT[>G>V?/7'ARH-['&QX9Y*"M!@'-4PB -'#.?N>^T)8MA6>IL
M;7WE$#)9IG!?]VRQ*@\C]\5C%H51D*J#_89W@%QO^H1<K3Q]1)@U:'.\B-5X
M (=<U3<3*U+Y'/0';&E9(D21C>>WNZB_8">>:7)$W-CAT[2&_,HK>,#)$E%X
M3K%$]3_$QOSU$G"U)/N18):BT?$=WBH.6X1[ZF4U34Z?9/W#LA7*J"]8#,]-
MJQZ,^R5-^*)F7Y-L2Y?1*J*ATH'1VQ;AOU#V:7O%5(3]>2SZV<D&\<AAAF\X
M4NXWB<X@LN[&Z"S=;9W:?Q KJ>YW?Z_!93V<9</8-=+;=1_$LN !5,]YV!?/
MF2=)$<1WX,Z(*\77>FH=V0O&OS6<FFT)0\(:[,UR,7*$C0VP2(V+-(#QXZZ
M1B0V4H'3.P9[X@#.D2>IU2FJ69%#EFH9U=%:G\K'Q=Z(A<H,S8!=LZA*%5[M
MO8H[P,YV&'.HK3]WII"?"[]N)C)MSC@S@!X@T6&1[H2Q+NWV3ANHMSW2#%+V
M:UMB*L)$4)X12=NO.=3/9#:8<^X*VX5A!,H/5%X4WB07P3;B^J]3JK2^P1:Z
MZ^K;MG3MB1.@?B:"& 5]OQ*FQW"&XJ+3O'6EFZ%3NI3M1N2H.^C/168ZKI,$
M1;]RHV8ET^:/P[= CU#%N135XQIV"F'1^PC]$JBK<U>>U6X4&*^JZ7$A#EP
M0;RY."XCZ>F9DY84,1P+G:V@VE(M2W>QS98EXA1S>H88] UR_73V;3WF7- D
M>Z(^#AG#N,Q0K'.7'O002JNW7JLM-D5G6Y^NQ<B/UUZ/K6P0K]REVX-\&5!C
ML"S.+#)G=)J &E]@T^^I>[8M28(TV=,FDKA?"U&'TPS!/G<YLUA.L]M@!W4L
M%=+4U@2;]ZK1E;/,5@V:J-Q5HS C;#M!D&@AMI6%JFW&F0Y+G,GM/B7D-8<N
MLW\74?*T+R-U3N%I3?V,GF97KWD:L#2,DB#=W7#S(&LOW*I8!@XH(E>5162N
M%JG%(6#6_*0XBL_U^BA 0F$E^"D'F%[TB8NEPSS,WLBK]T]10JNPVBI>O3P1
MBVQI_-=0%[Y*HM[BQAG;#>;R'4'.R>T[ M?@RV<G8T>59DIH(]R\@C:KW>]-
M=&3Z+,!=P'\.7J--L2%!XR)>#I\VAQ_$,7NA(2F2D!\H@NJ];?"44N$R\' K
M/V8),U,3X_9 "V?KE*YIDD7/=*^QO]!\L>(JN;U$W?PQ$PE9NLZ]1CH><SP>
M!<#-*7K9A%C9!^]BCO);?\=H,Q-W?-HV.!MC<_SL+XINLJR@X5=00.+G6SY'
M$M+].N"S!WE[KUG*\4'JH36+X;E-V]YOJD]4OJ"1M!W=(XHH<Q()A*7.E[_:
M L@92:C,DRJ RHS0W#@4Z>->]F"'YR!RSAW<IOFPILT-TR3/?"0C,K4>F)5I
M=!CIO2TC\!8KH0;APDVQ:W:V1<=YM_3IRIG02ASC!A@[BC$O9JH(2EAG,@5X
MV#L*:_'J70+"!O'+7:A?M($C_TH$J*YHNEA]9"Q<I/<T?8Z6M//V;="WV!!
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
M>V4:UM?*?$5E45C^H)#6L=TA!1A+UI4_%HL/XWAVQPM4,@X)C@AT,U+C(TV
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
MP<73WU4QM5E9YBC-(-"VXE89)1]#T'Q1,@O:7;#--DAVO\N.69<UAN(AIMZ
MW#/#<^=>+WQO5"]\[T4O?#]]O?"]4[V 9H@1O9!1OO+"_[T4P['@CU ,K9/G
M+LTW75%NL(0P-S3)A"#4[KJ+.,BR:!71L-<T1?>#3>T]E)[UI-XE(+)L(/)N
MSN*GA1GCM9%JI&72\-+S(,OMEM[DMKU,^R-\]=&.SAU6'>U @2R^:71<(ZJ,
MUCB.ZFI/:'1&ML_]B]4RMR:AKUNZS+DJR1EYI&03A*+2MHSYE?DD6,V<NNBH
MYX*C.FN-X:9BI *9/Q:7:ZZM/@5)*$BI3>">IAAEH>C2>K#68T$$70*$Y1+"
MVZ3&!C%ZQ43)BJ4;N;FF]"E(Q3UJ#&,4*R$4\6?5X#VLACX18D-8:B&IQ'7T
M2B$H+7VBD*-%>/6!G7=4A(&VU_0>T8^IU!)]]+QEE^@#9B2_@OG1F\PQ(= 1
M"8]4^&0Z*3)Q-ACRC,'XEW+\RVK\,A%46D(K-^Y@XDDFM)=U5YZ)8=/D[*Q[
M6MY7<9A5-T2>5D\[=!7@<4H9$]UA C\ZM",[J#9-O0Z"FZP1"^_S(,V'#:4L
M#N<7]U4R,,6&%FI+KHN.1<CTF3/2@OK"TGP]WW#N+8/D$PN26S[S$<W41PB]
M+S!647?/MA6*H$XJ\@3HDQ( _EQA>DB6CA=+FN8!/U=\_?W][^53ER )PB@X
M]%SSG3^.*007T'C'OR[]@?P0'T@SH8.%'G9_34%EB*ERMZ,OUS0L8FZ S+.L
MV&Q%V:5KEGYBR=-E45?J%D$>V?GN-F5AL82*31^+( V2G-*^MV$6*&!M"'-(
M;.N*"BJ8N0VP(J\[P#VK\-;ENS.X(RHABQ56@R8_/P2/O"O?K\=L" )S,+L.
MK>NR#JZX$5BLQ,[<4;&YMSW:UE;T:UOJ!3T0>4'19TGD?M:RP?QR%X_/)1XB
M2Z&V7G] ?F=C;$1^:Z>VQ>=3'0,'B:)GPI]/2MJ$FR1%ZC&FO9O-;!CO/)@'
M5T$*8<O9+4W%J\?S((N67'M>1G&1TU!L,?JF *JWT=O^(*HNM_@*&&1<( +:
MC AP8B<OX4UO'\?-8NN>/6)JG.M5L-VSVV 'F'JT:EO3D3JUV:5]C<H/6%M)
M"XYA'V\^>M6>K>QLT9UJ'KG3G"#%CW"?U@SZ$+_-]H^IOX)+6]@+"V&PWG+V
M9U>O-%U&\/0Z6M([2'ZP*/(,$D;P%2+;94?/2@X^.:=/40*KJ70^J5X;31$B
M5L=/:"C.'-,3&C/**SLA_ []V VD,_)2@B1!>>5%2YA0]GM)R;LH(2&+XR#-
M1 !+!MSI>1;WV^7V8.^[=5[;,K$F-%FM=MN$\'7O[\WI^\3_Q7]9_8K_#PR!
M_^9_ 5!+ P04    " !U2BM9IYD9D^!+  ".@P8 %0   '!P:6@M,C R-# W
M,S%?<')E+GAM;.U]:W/CMK+@]ZW:_S";_<Q,G/><.KFWY->4=STCK^U)]NZ7
M4Q0)23RA"(4/>Y1?OP"HEVT":) $0$*H2L4C"0"[&TV@W_W/__RZ2M\]H;Q(
M</;;-V???O?-.Y1%.$ZRQ6_??'D()@\7-S??O"O*,(O#%&?HMV\R_,U__L=_
M_V___!]!\!%E* ]+%+^;;=X]+JLL1ODE7J%W__?\_O9=\.Z[7__QT\]WG]Y]
M>;QX]_UWW_\8?/<A./LN"/[CGVF2_?D/^K]96*!W!(BL8!]_^V99ENM_O'__
M_/S\[==9GGZ+\\7[[[_[[H?WN]'?;(?37^-R/^%X\$_OZQ_W0]\L_?P#&WOV
MX<.']^S7_= B:1I(%CU[_W\_W3Y$2[0*@R2C%(DH+$7RCX)]>8NCL&1DE*+P
MCCN"?@IVPP+Z57#V??##V;=?B_@;0O5W[VK2Y3A%]VC^CO[]<G^S?V:2/:&B
MQ'GQ[1KEJW"=K-&W$5Z]I]3_[I<?SM[3">\)\"5:H:P,,ERBX.S'($<1_1A&
M$:ZRDNQ^L,YQ1OX=L7%%0#!E#U[F:/[;-^MUL@QV:U+8_F>')<O-FK!5D:S6
M*?KF_1&2ZQP59"2CZBWY8CN>HF .X1HZ]+5$A+NW>[ #,,71"[)0F(H=+Q8H
M^G:!G]['*&'0T'\PFC%ZD0__NB(/+C?DA0F3;/>X-)RA]+=O>#_7T*24U7"^
M)59/T-RB19C6SYQ\38H&@#@C5&!ZRSCTFW]])KM2/.+K)"-O51*F#[O]*B:S
MHLS#J'P%CN*LUF2;A\6,O9U5$2S"<%W3#J5EL?OF0,3M%_^Z3(HHQ465HT?"
M-N=D_3\Y6"C,&"\&P?=6</B,GB?[E_ONQ;L]R>*+99@M4'&3'8])"!>1,ZC8
MH\!!ML^EC=)D_X*0TQ3=D'^^?LOE ^W ^QC.4B2#]<4@$9S']\HDC][AG,@M
MOWU#9!_RRQSE.8IOZV=P[VEVJS! R .9K/$/RO\H_NV;,J_V4(1Y].*V>KO0
M=L3[=9C3^RA:)FF\FSW/\4K]J,,PTI ':R)+2<1)=&N$-@!^Q:T.*7W4,<,T
MHNL:R\2+L2,O87\,D&; )#@;*PF@1[TKS "1L;#.._Y R'^^;U1OM*EW/P3S
M,,F#IS"MD+(BUSC9@LHF@,,K9UXY\\K9F)2S:_(J_T[?Y -H4JT+-,>K4UZ=
M\NJ45Z>\.N75*:].#4>=4KB\[>E)WP?D266>1"6*@R@LEJJZ$G<!"_J2!!:O
M,WF="2HW7A#NH48/\N?JKRHA*C@%J>$$X(B4RO/'JT^-'P-+&J'7I48H#'A=
MRNM27I?RNI37I4SJ4BW%*6MZU8< A7F69(LB(+."8DD(HJA9B98PKUO)H?':
ME=>NO/XQ)OWC:OM&WZ'\@;[/,IU6.MYK3UY[\MJ3UYZ\]N2U)Z\]#4=[ E[<
MUK2EGP(Z+2/3$K3?,:":U#C7O'XD ,,K1EXQ\HK1F!2CF^VKO('[^R!3O'KD
MU2.O'GGUR*M'7CWRZM%PU"/XW6U#0XIQ5+%_A%D<(,;#1->88S*7/A6N+@$7
M,JH[*<&D19&:D,?'%(3K-%PT*"Z-OVM4I2[H&96C\ +'KZ4@WL\ZH:ER^K)=
MDQ<C3/\+A?E5%E^2S6N"3#)4(Y276RZJGWV'\@3'U^2[)D54.M88G)1&,"C?
MC#0 X\WA+>1I$-#A9J%MTA\@0PU 67,;_Q42CC, W_^IPIQ(].GF'JUQ_EI?
M!XPT .-C'F9%0G=/"B1OJ DHR2-$D!W]K!&:K<0;Q^3F+K9_Z-MYQK48"L::
M@I/><-/\$3_S[9K<D:9@O,-$A$G_7[+FW-+RP:8@92+_-+_+\5-2%V\3PLH9
MKAW:"_)2Y&%Z0\2[K_\;;;A@<L;IAP^O5CA[*(E&P#PHQ;0J68' )&L2&N&3
M]$->BV7U"4@>3'>X4>2 #-<.[5 <&O7CKE8H7Q B?,SQ<[DDV[D.,SYO"D=K
MA_4Z2='G:C5#.1? MT.,0)5?D#-E0=1K(6!O1FF'[2:+<$[8G(F"[."[H'5-
M\HWP4 ?-,@ [D;["J$R>$)$1P^U;*P!:-%P[M/=HD5#S2U9^#E=\TC8/TP[=
MPQ*EJ>SE;AJD'[)5F*;G54'$L()_9#>.T@[;8_CU)J86FWE2UX"5'#Z2\6-W
M3JO"A*GQ88DS_IG-&Z(1J@<453DAPMGWL\>D;-2B>4,,0'7U-6(EJ#AGB&B8
M1NB(DDGEN8?-:H;3!K :?W?'8REZ?9QW/H',2J?@@E(A!-QBZ"A[O,46@U5<
M1QE%0A*18 BFR/=N4$3@CP*3X@<W2 'S.(&I\J,;5 $ZN,!D^<E%LG \:F"B
M_.P64=[Z(\"4^,4M2@@=6V"B_.H6403^2#!)/KA%$K%O$2ZF.26Z\@S,<'(X
M);8JF(KA%')$C%4P"L)IXXA<"W3%P^GBB&0+<O[#J>*(8 OWW\-)XXAX"PW#
M@!/&$6F7'T4*)X4C,J[8S0(GAR/RK=B_ S>V.2+7"KPW<%HX(M3*'6QPDC@E
MQ4)BIN"D<4J(A02>P$GCE!PK"'J"4\0I&580R *GB%.B*R"D$$X91V37*TD\
M%IP@CDBP5XK!QC:2&".<%3A-8MHX/9B%*6TD'A1+A,HBB.I+@=:53' <5%E8
MQ0D=5Y-HB<J$B.@*=6%Z?)C19,C>X?:59S0$][4I;C%)4_Q,M_,:YY>XFI7S
M*MVV42SN4822)QHITQS%VVD-LST3#D?079A/<V:,BED+E%WE*0YN"C-M850?
MJI.J7.(\^1O%<DQX,^QB<%,4%1SZEZ/M0LY/N5&9XHOP0."=SO?E9^YP[>>4
M5'%2F>I"8:'>X7S,45A4^8:Q[Y:3&1-S0):.=R?(N!6/6:^-Y .PS3/&Z85>
M^^H_[0J$=1"GG6,9(:&497.X <8Q\H@%?C!9!NH Z$B6)DT"3)*!&OX[D@1@
MH1MG;+8:78""K VS9=U6-)B%15($>!X</Q)NCX2L8KYB-0@@;T'LQX+H:U<W
MJ;"^=G7_.$SS19@E?[-W^6+O4*#71A;?';WG1RKT@7_@]:YU/<:;YWR-;+%P
MX6MD^QK9WDKFK63>2F:R1K;>^]Z:;O=],-O&FP4%6K#O\UT8IZ*"!UG*O)8'
MA\JK>E[5\ZK>F%2]A_J%WL>=P[4WA9E>(?,*F5?(O$+F%3*OD'F%;#@*F?(5
M;DW'^B$(MW$51/78!58H*E?"-<QK50!PO#KEU2EP>L";N*-/J*$J,'2X4=C/
MZSR5!YJF0G/IV:'[EAN@PZW#WOARP2<8#I$GP-!JH:P.55+\>8ZR:+D*\S^%
M6$"G6<9ELP=+P$_0:;9QH17VU-!X/<,N!A0:-:9Z.\,L!A6YU5<H?P.7\&@%
MSAJOJ6K\&%@RMFUEAFQQN'6+J[^J,'W$'W-$Q(C\<1EF'[Z[##?%75B4EY7X
M$N^\GG7LZZJ06]@$9YO2W&%A)3SQ%&<;Q>P6AUE12[MY&*-)%D_+)<J/((4;
MBSNM93;VB<+UF1S===3^I"A060C?0L ,LP;ED)#S'CVAK$*?42F$73C6F^V]
MV=Z;[;W9WIOM^^<*J0T#JUL,7*$-1)'%+;1&A^G3;*\0$4EHKW&%4FIJ ^XH
ME[M"-;D_K84ZYHJSL5>6:J&LNT)'.9/!S/RNT$-%( !KG,ZE47.91<V&[PK3
MM)$$ "J_<VGF*FS3[#-QF&.$LK6*+\.5TZ;-6P7SISM7K$!CT-E8ZA+XH#.U
MH+,>7 '6PM!^#/+ZXJ0A6WB1)2V*. C7,!^&!@#'AZ'Y,#0?:#"F0(.M>']-
MSFDBS#!(_DC*Y4Z:DWEK5:=[1Z%W%'I'H7<4>D?A.%6M@=LLO*K54M5J=X];
MTZY^#I*,#$)!&7X]5.X#JE7-D\WK4R(XO"+E%2FO2(U)D;IA[_)C^!4>Z@J9
MXA4FKS!YA<DK3%YA\@J35YB&HS#![VYK2M(O 5%FPB1GW^!YD.)LD29/* Y"
M%@:DJ#9!ES.O2*E!YE6KDU&M."#>4=:Z(ZQU$69A'-Z6<6/F$VBLV<H-E)UO
M]KQ^L0SS!2&;1,T SC);"V%;)G(2_54EVY9:])\Y$F=!@N=9QT90E$(\>KR:
M]_@QL%5:T>O=XQ,<O=[M]6ZO=[=*8)!<@+CU?>\*A0 I+Q APA4K!8!A%(1U
M5ZABPGPU\/A[;[YJ:;Y2T@FM6;!^#0K:I6\6$M(%9/0:946;;GC2=<S;K( @
M>6/5R1BKNEN'GL,\EE3^:QQC25^?SB^.^/X>I;33[P4NRH(UY#RGK\9=N&&$
ME=FX>EIUO):+\6-@R?9R1<Y\O$&(]8.=KBG3".M@2<<;#M\GQ$LBPN(,'B'D
MPK%F[4?[-_'X79WD>9@MZH/T?//F;65'U^'\RN*[-,P^ARNQP5CGH[R-T-L(
MO8W0VPB]C;!_KF@65+')@]T54LJ-) *MP!5CF92?@'*=*Y8S*3T TJ(KO.$-
MJ=Z0VM:0VJOAP9JA]>R[($:S/8) L^JK6>:-J(T >).I5I/I)(Z9 X[H,=/K
M^TG\[ZHHZ8XP_IYFCV3WIO.;C"@29#_K<H?\Z+K.B_6 $/,5)F'V">?E(EP@
MJJ[Q(9:/[@,D1%,PT_,P^W,ZO_IKLRXO9N@^%,(%F](#<%<WY]-[/B -/_?P
MT&N<HV1!3M4GG#XEV8)>0LVU]J'#>P#J-LQBHD.<5^0R(0\I;K);- LS3/@V
MH^YJ)-@OU;D]@'O,L@\H(E=6?+XY/"[,JCFYY*J<@',=1DE*S@X^_)T7Z\5[
MDY?+R8H<"U&8T6)1=V%>)B*^@,UPS+'$BX(F8D]2%#C?B$\\T;@>P+A'&7H.
MT^E\_[)>$%Y*F)A9?"DH6SV$59Q,\G!&SMV':E8DY #.!;S9TY*](,<#X&I!
MCNC]DPD+?B_"I^TJ9E'H!0.#"'Q*XCA%5V%!Y(OL&(:S-IA 5[.#4BOV@JZF
M%27UMW\H+SU[]/&5 P!:,J<'\![$\EO#SWT\M!81ID^$D9+%LCR4."<W')7]
M!0"I3>WNY"KR\LC!13X=E"_RX5^?PJ_)JEHU LS]73]422:&JNEW[5#=4V-\
M@XK:^)L9:+@4:OA5.T0/$<K(@8J_9,4:1<D\07&CC0$T5C^T.W%T!PIG9X7C
MM$/Y!Z*G!(HGY, (!?LM'&<V?2PL^-J]>)!1..L+=:?.B?K+<@=:A%?<3U8P
MU&Q(%9J5\ HRDM'&(;_)B)I:,4\KGSOX RW"*PTDD@T?;^#=^#&P%#I((%KC
M(DP_YKA:%S=9E%;4ED<!Q5F99!616M>H;@Y0R!FLVVH6BEWM[_GCCC23+#Y8
M]0][5IQOE! 4G!]F'VZ4KG<Y)D"4&QJ60I&Y^JM*U@Q)64MWA9G#P(A")7P?
M%&;Z0$SS@9B]P_D[T13HPZF0*V!TWC!KL J9F#_0![GZ(-?7Y/!!KCN*N!WD
MVFS^PA([U-BQ;B.JX [R@"OT$NC+6%4_=84F @L35K'JN$(/KE2$X;*(*[0P
MK!_BGE7XL6^#W . E1P:8Z<'/,1:9C9W)=Y>?'BW\(>[0A@YBXBU7U?H +G-
M1/XP][,R! [TL3.!4#D2A#&,?=/%>/.#2L:.-^2E;Q\(!*;.:!N4 R,N7#@6
MI&)EGTDE8(+Y#MQ#Y1F)D5$Y)0!,C]%W)+?A8QT[M]FS/W3(* (3_>=A$UW.
MTK*P(U?83VPN[C-Y"TRQ7X9-,3GO*$=7N,),BKX:$P?1P-48@'$+G)WJ"DT
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
M6X - IFUP!MMWJ*UA8M<2;OS-XG(47&9I!4Y)Q3-"ZU6\Y8#;SD8,IRG9SF
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
M,V_H#A#RLV/\GEY;!;FO'E#^E$2HSL<AASU>9&P5=M1P"6'FL49I>71#"+F
M.\XHM%OAFY 69[RS!#367M0P!]H78X(S*W#R#BP*$A$-4++(Z@)TT;&#99+%
M[%-M(#^\)$RV(.($!V&]#S,<F5<2UD+Q59C3-KV%))I0--AL!!L3_([:FW)
M?C,N^'%D\/YD!]Z=///J*&I*=E*:X^,R(? 2S>9(8ZWI.9D5K"2;# 7(7!>B
M3?44-JEUS;<IS^S_YZ^E(RXRK5<RC_$+1A$A]&*@K7.T \1V3M(7YH!:%!5>
MLM+Q]J!_8<R@[5D_H7*)7QM!5*8&V:\0M$8>" DZD4\DM+Q%L(9<G'".*$*4
M,5BU'7NT4VNZ*!A^G(NRA-((HLTY%SH()0[P%G8N= [\@K6S%3MW(#4WS!&Y
M*L9^5XD0;,!?Z% :.SNHT:)3TH]RG-/ #Q" B=NYFWF <<GKVC!1AGDYQ- <
MN=U!WQ'RA/(9'FC$DLCCXMQK(R2%6<^F<_)P(VTUAQHY)S0+&=2$L] Y*8+/
MEOV&A>D+K*XOUJLL'N+](3>.ZXN>'AQ'0>/U-$1&?ZA)DJ$%5:2'R"FMC/A@
M2BEW^QFZN"J+-H!+JP/5_EN<,UW\H'!Z*8OWPSZ@96$@-M(-6-'I'X,</:&L
M0N3O7E)F_\ZB)$WJW @\#XC4$T3DB B2+$!?(U2P./Q9PN3"8E>@>H<4L"JW
MGH>;K]RM$P]?W5MK=>_S+?$?\279TE>/%HSH)<NB*(N;[(HQPG2^>\[;VIG
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
MD)G@K#C?'/\B*-&FOH!A_';->ZG)6GQV"<<:AKHD#(SB7;'L%[43YDF4\%&
M3O19"1!XI_,Z?C$)TSL:#D3##L7JF\I4%S(M-, )M X-QA[T%A IC\@F&(7_
M,2?2?I5O&%BU=TGD?^(-MU6^^4M&I.84Q8<X)8F,*I_@3FI1JV/))PJ=3J)0
M"_D-PZ5N5Z@DSR5J*P>[DCG3'Q_YPH*^L*!/RU.)T'.%(&)4CVC2(@K-E1,$
M3". -<.5(P5,$WA*@RNIAV#2\&-$7"F4"":%L@]#7[W$@5((JD'K*Y@X4,(H
M![?J*YEHH?8=_!P694FX<E.KB'>R2!^W)#P!ML BQVYRC IU%$(U](EY5OK,
MJE )'N'MEL 'HTYSW+);\A[P;9*'#ND3\JS=U##:R#+N] EYHR!,:W(,7*F&
MB2_00'%7!!@ O@WV!E$!"%>$%S7**.;YN/)2*;,/M(""*^*+&H%NI>D&^H09
M*[(OC#Q:"NRX8N12("&L%I0K1BZU5T]+]XN!]P5I=7KW=K4-O#6(&G'44^;!
M=%+N$C)D.@%K6,&%2&7YVH(2IBH$R+)L71&.E%6R4S$KPU ^IA$@XU.?8F9;
M=!33J%.=20<5-35+<\L2*:X<4:WI!BI>XHII6IE*NCJJC4=74SO7^3GQ#FIK
M"BX.0(JQ4Q$)Z@P$J1[BH,H&HT[WM&$'M3@8Z<#%!EVYXV#*"C05SA5-!8#O
M*Z;AEWITQ7.D1A-0K6(-:LB'FC096C"'U8 I!$[0=$7I4"./:HZ\.P>RTFO6
MI<BY4[$R:G239Z4[%2^C1AS5@HX'4AGN?_UCD*,GE)$S,T<17F3LQME]5P2S
MS?[WB)IV6K:][O@4HTV.^@/8-SO2VNQHVQUL.K^OM^*:O*]-WC9RAM<A #2,
MC?P7OVUXT=MZ/:#UL$:T9D&YN4O6Y"$/FX*J%$R58H:QQF)++6;V "I+?ZZ/
M[4EYAY.LO,D>DQ7Z4C!5>5V5GU"YQ#$?Y'8KZ 9]6I5=8><OT0/PW ZZ'8^M
M8^QT/:-[Q90B+X^JI9!/AR.)?*#9%'$5E=/\ >5/280:SB79,%,P,MF@?GS1
M>**#QIHN+TBA$59\:QQCN*Q8UQNAAY5\X3$'BG21 YV>YO/=83^=TUP2T>'2
M8N:0,!+6GE2::[BT5_-E+#RH8)/<J9&E]V+WQ;3<+Z8EE9RPDM R=G*T.>MQ
MI^/4%8KQBR/!A/.QNX0@+Q) GAX[&>"ULI3%*5=(T_9L49!MQA[+"'F96EO(
MQDZ<EGS4V3SGBL^U=[K)3(.N,)R)$I #YQU? E(M2*JSM<V52U],KI[=5=:<
MSV=G04K#O(N@J-;KE/T2ID$4%LM@GN+G(,GFF*RV-42P&(V@Q+M)[7S1_3[4
MO&M:!_S>4ZW54\TUN?6[ER#WG0[V,63CK>OY(Y89L@O$O@LWK-C_(06)8^M5
MFVP-K[L\R:)D36,^&6P\[P)HCL4V?!+PQ8/-^@I?5I2;SNJ@R9OLZFNT#+,%
MNL8Y)RN)YS/LOJ+W'9KW'8Y+L#9ZRGO7CONN'9-J^UBT+Z^V@]1V!6'$.18!
M$P8J=#IG_A-2""((.F<-%-O ^I(>!V#687^""!=E=VN-8"V;1A@I6-ZV8MNV
M(M@B19.)=+,M6D*V73P4S!^O9EC#X-6)-UGAO$S^9B\M !O ;*.8,: N"(MP
M8-__;JF)Z\N[0P H?Z!9;7])-I25.I' RQ_HK2D.1&(_5+.T/KUH2BX/SA>#
M@(UZQZ6:]7%7>7N.M^=X>XZWYP#,%F#QRCEF4;;L-,K3IVS.>2N#G98I1R:1
M@JD!+[ABMW@/B"AB$0U,DW%45 '5,>9IA! +WO87^K\9689\\_\!4$L#!!0
M   ( '5**UFRN5?'T#P! ,W9$@ 4    <'!I:#(P,C0P-S,Q7S$P<2YH=&WL
MO7UWXCC2-_S_?@H]S.XUW>= !_-.IH?[$$+WL),.N0*]>^_SSQX%B^ =8S.V
M28?]]+<D&S#$)L;(6#;59WH:;&.5I%^]J%2J^OQ_7N<Z>B&6K9G&KS\KG\H_
M(V),3%4SGG_]N3OJ#08__Y_.7S[/'/H8?=2P?RW,'&=Q?77UX\>/3S^JGTSK
M^4IIM]M7K^R9@OO0M46F.P^^/EDZ?[12+C>NZ-WU@^R&JFV>W7W.O;E^U,#:
MQ-Y]TB:33\_FRQ6_17]3J?G?JX624+W2#-O!QH1LGK?5H)[19Y6K__OM;C29
MD3E>/ZR].B7:],X/UJ1HAJX9Y/_>/-Y=.18V[*EIS;%#1Y>^2ZF7RJU25=DT
M2A_](WQ V5U?D\&].=1>I5PJ5TI*9?V2I5UR5@NR'<0IMI_X6]9WV(^JZ\=M
MRPE[?G-KYP=+QR+/H8/>OJ+WM_T)>TZI^OKDH]PR]1#*^1WVRV:IK/B&UW86
M5C!>V)T=N+R9B%VTL-M/V-Z@1;/-6D5I'L*7^\0.S)U F-==F#M;)&KO([&T
MCU]GMC148JGFG.S\^O'VZQ>-DO]L?YJ8<]]$19NFUT!^?X<6E6C!PTYO[(PZ
M,9;S2M"@5,I7Y-4AAJT]Z:3$'B,6![5=JGPJKW^^6&BSS:\UXX78CFG9GQ:$
M<L!"6Q#68]Y>N;D%Q61I653"K8(I7-_=(=/6)B$PTB:[_7F=S(*?9'=V'K5"
MD&E9.QPU,9>&8X41Z][<)6&BAE P47<>I'SSC/$BD*'8C=T1L)Q &;#SD.I8
M>^)B!UKT]A6[[<DEI511"IV_H,\S@M4.^@M"GQW-T4F'S>IZTOZME/_\1/7*
MYROW'G_L_RN5T%=B,$00%3VMT-C%_BW%/GHP+0?KJ(3:5TJ9DX=:U]7JM=)
M#]]0J>2^8DX<C!B1)?+G4GOYM= S#0HWIS2F!!;0Q/WV:\&A*+SB>NVJ\_EJ
M3>GG)U-=(=M9Z937IO39TA3/-7UUC?[GSZ7I_#+6YL1&]^0'>C3GV' O%A&_
M7$0VL;3I+XC_SM;^2ZZ14EXXOZ YMIXUHV1ISS.'7WO=7-/)='.)(M0VK6N$
MEX[Y2Z'S6=5>UJ2HFKW0,27#, W"[FFOUXQF8KD?-54E!E7F]#-]XIXQE39Q
M._OJ/#*-K?Z;C1A3&F7%^]CD M7 3*Y0_KWN&W0J5CTZ/!;6!W3<7W\GJP+2
M*.Q\,J@4_%BG3/^TE9I2J7R^VB%##%F/Y%FSF1IT[NF=,*KVGNH\,(%1>J 2
M PUHHY;!10U%T6^FS@PA.FD#8_)),,7=.3%4^M?YHN/G G+U]J\%JNBOI]HK
M42FH=-OK@_;Z4FHVZZU"AU\43$F/"SWGBV9/L/XO@JV^H=Y2YMIINUWHE%SU
M*KCU6W.RG&^:IW.AF>H7>LWV-]\H%SK_*QHSNRVSCK]ME\HH]N.PEK]8>,+
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
M2!Z!R>AAGFYGQ;;23(,'P7)GWC9,2NZI.]B-[6R]Z4^>)JNKJII[TN(!:^K
MZ.&%YF ]%Q-WL&]YFL1'XF#-(&H?6P;;7,K%[ 5W*D_3%A#0F(N9"^U7GB:O
M.YDLYTNNQX?.C,6"S1<6F;$A>R$#%C5%<C&9D?LI_>0&.%AKI6H9K!EQ\W:"
MIYA-A2BGT-&3#%;0!4\^6$\7-=U@=5W@I(.UEJ"U)BTH)'"/IS\V&MBZ9_#<
M^2=+P (4;-8T/'?GGT2P/3,Y;6!#9GCRP!8\F^<N@<F5P*9+I(\A47!@L26W
M3DDIG._H209+[X(G'RS$BYINL"PO<-+!(CVC=_+\H-# GCN#!TYPQ"K896EX
MX,X_B6!?97+:P$[*\.2!O7,V#YS(R:U"^'^"DU45&\4:;;+ A,G!)(()D\EI
M Q,FPY,')LQY3)AD)E>N341Q?0Q(B0!A7PFZ$X_+[2 RV/'H209+[X(G'RS$
MBYINL"PO<-+!(CW7)J),H)# DDU_;#2P=<_@G109S DV:TK>R?-/(MB>F9PV
ML"$S/'E@"Y[-.YG Y$I@TR72Q[!*@&"Q);9.22\K[W&3#);>!4\^6(@7-=U@
M65[@I(-%>D;OY/E!H8$]=P8/G.!@3K#+TO# G7\2P;[*Y+2!G93AR0-[YVP>
MN 0F5SH/G* ^AM28 XLM(5O\;,7R(M3%@DE.;L%UG@)?!PKKV.M!\0R^[7?U
M/TO;89_<[F8=!;;E7.]UM]#9O[C7Y]"9SQ3FDBMX4 48722,!)\["+ KJ'5H
M+FG_6#UW^\[$AMTUO&+M=,WV2"9$>V$52NV;U8VFZ_0:&Z*E/5XMW/+DWXTG
M>IVHC^2%&$LB^=+UU.YN(1#<[\NP4P TV0!-*G9/F*1YL$SZ%F?UH%,11@>0
M2=@%Z]?-:H.+.VRH]-;-4J/#83S; ^../&'#-,;$,(AM$\F7Y!'Z6.BP"N77
M47MZ&0(%L"$5-J22&W>F\>P0:WY+GIP-&%SI2^X(MLGP2=>>,2_I*3<"@GKB
M3?G!_ER&#(!YSCX_;PJ</RQ]E<UWZXLOZ,?U[X.JBX>N@I5Z2:DPI 297@^<
ML =L.[=+/W1VGZ(R%^MC\ZM%:*>L\0P;[?(M7MG>[^2&5:1N;VW-V/U/9BV[
MGCU!:UFEP9;&NYH"<)$97/C%TWHJSZN&-$!.)I&3?&:\&ZPS'3V:$>+<F1.N
MH?G\\^W3>].8+"V+>1^I)>YXJOM2$10V5EO0'!BTT]VU .!W%D\7"LLLXD+>
ME1F *)L@2M6-LY]?OT=5 *7<XBKB4;/_N%G=$&,RFV/K#XZ?$:8#YCG&[\EZ
M%S/@9QOG0&]I.^:<133M/2,WKMX;B2VD H?D=*UY8$Q]6YR'!S=)R9=248B
M$Q, 6@"MM"<ZPFP^ "V -G,V)H 60"N]37NTI%U'CFR7!(#;;3S-_JCD'+I2
MR-MU0#) %Z";B-3=BWQ.P)/P8)GJ<N(,K1&Q7K2)BSSOHH?1L3;7C.?A=&QA
MPYX2:SC]:IKJ[B_6]RRB=IT'4S.<@4%_)ZE3BD4^!W5\BXV=$3@=CQ&&T']@
M\-!87H:O & )L)30&P"P!%A*9'^"M 182K2BCV1;CA9DHF'=63UH"W:X8V4[
M9,[.@/1,:H ;SP+P^MVF/QT8BR4=5F=FJEG#+P]NC39.9T(UI^BXX;Y@.Q4@
M#A#/N<T+$ >(Y]Q^!H@#Q,$6%P+QX=(!C)\1XV_'&ZQQ #F '.QQ #F '"QR
M /FE@OS\A_?_1;#UYO#^TK&N_[7^Z7'G]AO>N?V;)1TZ8MO=R9]+S=8VYRH?
MB#7'=-Y)#QM8Q7>.I!#>''H,[H>'F[#>B 2([UA]0^BQ^J!U6/<'MM1-B!=+
MOV=I$X>H$B</W(1K^4GW9R8/Z,-EK#=@,G-D5\-DYLA^A,G,B)T4FN1Y=P;[
M\X5NK@CA?1\NF)60R5D,[4<R!HW U,EAL>\P3SF("C^L"V%2,Z43-9C)!,2H
MX.1( ;(3K)2T=-L!CH%)28M3>&+"5JG<+E7*_H\]BZB:\P5/-)T2Y$W2BZF_
M:,;S'7,EW9N6,^O.:4L3+/=\O>V*Y_9ZKT-)*:SU($=06/N/GJBP8'H3FEZ?
M=W-OQDY=#"CL=4K3_Q$F+T%CTAOD*,;DWJ.G&I,PO4GSYOZ,R<&;_W[$QK-K
M!WW3#&V^G'O7_X$MC9W7?J2HXK=OL,V_7-JDO]LT+[*T'D6WYM+.4)Z^";L_
M%UN[;W=2\B67$D(Y?@64"T*Y?R@!Y5*A_+ L'Y')DKY_^$(L0WN>.=M<G/2)
MT?#+(\!? B'O!OI$FRI@BI-%/S!%%G0",$62FF)3SW,T(08=>]/-;:6J/&H+
MZVQLMU5$F5Y6A\:86//A=$ IM8CMN"F?@<GDUSSL58$3[O4I]K0#WV> [W>4
M(?!])OA>C'(%OL\$WY_JE_WW'7G&>I_WD?_ _XC!ZO(^T&YHLE<33H'U5*)=
M[PV>U^;A(;PHQS&@*\/HDD2Z;1)#PZZ3_-$:.W%-,&-9"7JB+%LK*;5_#XR)
M.2<;N\]?B:YKJ%N;[U:S)[K)CJO9-ROZ96':6/]JF<N%35^A+UF);?8,;4<S
MEM0HHP2Y57DY"K)>=OP\PY1BY?)=PX)!0Z!AP9$&H /0O6-O^&'WCKWA?U2
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
M])T;)5QE/D%W7]93Q3X-OIYGII[9;;8OB]0E6V7S1Q<6F1 N994*XE$,-OI
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
M@GK#;P^/_=_Z]Z/!/UAWZ/<^^G W'(T^RD#Y9ZWS86 @9V8N;6RH-B5*Z\A
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
MD[ #I\C'*0<9I1W.*.<Z$-@L-ELU"8&=_2*M9_*30S/0##0#S4 ST PT \U
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
MZ&"935Z-)%M'DO&(X9_NR-(6^)L*CYXI_Z4HBCS0#P]@I8_%A^F-.<*(]A>
M5Y\L8J>,G2\O5C;/?=5JJZ;N[.#L8<HBPQ84U5%,RV4:?*J<WU\HG]@L'*7\
M )]/ 0JXS:/NT:<_V>RLG?-,K[OTD</#I8_T^2J*[B@>H*<R6BAC9KLJ[-&:
M,YO"^ I@NN[J  77@L.H#E"#8HON)O %%TXZMAS7@77''H;P\4%-=?$I Y9X
M8O@!/L8 .H#O\ 3_ GSLP /.1*["24BQGIBMP*.LHWQE)NS#,!8M?,0)'G(4
MU:;?'!W0$994%4P6 #2$C1-=F6.F6".X&)5X '^3#D_ZR]-00LWS]S<FN@5*
M=_&,UH0^?+0LC8\O='C&@D-;40[\90[D'0,8\2\S.)PR48$13#P#R'BN<RXD
M%KRP9G/57/SW;R?]WO%')[)?P!+=E5#FJSVIAI>S&<4-<B>BYV!V!]XE+@;X
M$*QN& K"W]95HZ48*I!RB\- MQG /7F-X>M)AZLCMR8OIJ/$6M_0V4<,",Q1
MGJ?,5.:V]1?#&^3OPWN4[^PH6Z31^*N &[$7@A3_0/FDZ4_*V% =X,&W7Z\>
M[@[D9L(+HBA@]D=%LM]N]_<#L4!DA>FD;5O/_I_B?QLSN)W;KS]^?L]]2WIJ
M0A8H@K?E,9P3S@7DOOZ$C?D'"/T2^7GJIX#<GG^];'^^NSS_G_;YU</EW0?
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
MIB_]P!13;4R86(TCYR3IY+3Y"<G.*I/%*U?B5J'(U?957L7*(^+#;BE9X./
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
M*41G)6 #4!':(,&,Q4!,@>+'L=E6&( >7TD$+?!1TY] G3$UV<H6]7V&'E$
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
M8EHT/B#2$2[9&S*5Z?#"QA5\[;V,H>@;MSI6DC6[S8_(K@2/7)'J%D"&=&\
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
MI362VL/G_\R/?X^GOPX.?\?/_F")/'=$@M1D]Y-N:K*[\HD/B.'$_O\.4$D
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
M %Z&E2$*\'J+,UTO#ENN6RR;>!M;208]U_HDEGR#*UX PFYK$'9JIF?=%>K
MGA\@7#OT5AGHE>(M)4S;6 ['58BU,V3NIC&668;>'<8RHZI]-H;C.KZGCBOM
M0Z#;C)E^<#0_0+!?(?Q*37'30:KG<MR6\89[ C39=:8HSTRQ<VR3O#2_E/L>
M%_L;*?61S=(\2'H&9PF+_#A@@W?6U$>=</"A53]+6[%;2R%675GO()^OA6<#
MPI/T6%<6G_,%XM-LU4^K+C_;/7I> D:@4E.LNI;<J$F;C#9H U8;L-J K<09
MG!N#;C4/%AS*4>#Y>NJS%0Q<-?QVS7R,<T3!YN-6X6AS^^##27W+)0QO]D.%
M:T-WGX2L55K(%AK"ZQ.S9F.G<E;M#E_K'^I/,YSZE/#/+:*.FN/ EPL"O48V
MTEO#[$Z1WCI53^Z(PZ7G6G.2EX*$LP7)G<Y6DSN+02(9 F9R0=OKL+.E3/T&
M&_GL<,@B!\A:IK$XR1,?RU_%L9SHQ%,)4KV.(2O"$-(5J@H[5 7JIP"'Y\=
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
M488'IH*0?T,"AF5?[BB:VV=T:"MZ5IPM$S"CP=.CO265ZUJU.,)=XU'92)9
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
M]>XN/QDWE[=_?;V[-;Y_-KY?7][T[J[@6[4C9 %BY>J!9Y$+YGIXA6>"-PW
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
MC#ZW72,<,?Y%F.%A(\GU^!+DXYKALV#"!J']P)Q971@6=R,6FQ@&YISAH A
M-8FM#2:F.S=)_].0_G/P86C\W*IW?GV+O_ZPTI-\<+&PFN'Y_(/3-S6Y7:N_
M\]$,Q&/\'2:N?.J$J&_E BU!^P?/F<*.U14B+.;8;+Y_#0=",8[=R1RX<'_Q
MO2 P)KXWM,-(OG<[L2H01R6+ 6QG_-QLU[MS>+I]\H;_ 6SH2N&O<2$_G_M4
MZS3O*?Z1T -E54 L_%(JHI%^[M0;J0G!\O@G$Q^L41\H:E@^O,@U^K-8K/A/
M$K)%P_=9"*:G4-.!84T)Q *4LZ:#$!3;4UUSDQ UYC+?=(AJIC4&XS,(?1.W
MS&!/$^8&R@FK:5: 6G2^\KG^?%)OJ*>K^+1;;R>8W5B[8,'1(\9JU$^S@B7D
M@7\Q @\%1&5BSK#K5+0,<9;!B*AO6!# P[!P(->#/6#&D,%*Q;S_GIH^2)LX
MU*JP3568 Q>O0C8$_/J6\8Y?BLR125%)T5N#J3HGG)$F S#ZV 0OW#(&GAN
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
M23UOG:AK[2&,S2T;/#+4I1=8*1Z$)G;C0"WIFA@- J,D!($"?_L^,E.0?!2
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
MDF&*."OO4/^@W+0FK])C0W!^> -_41)(.R=L?*7@75 KZ9])CXA'!5R*+\4
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
M4&P;OC=X#ZR'(\+3P'(&T9Y%AKP80]ACMF\=(R)J)D,XR"$)8UG=2<+S^"(
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
MI?WXKU_?CL*Q\^'_!U!+ 0(4 Q0    ( '5**UGS/AN04 <  %LP   -
M          "  0    !E>%\V.3(T,38N:'1M4$L! A0#%     @ =4HK69$Q
M2')\!P  &#0   T              ( !>P<  &5X7S8Y,C0Q-RYH=&U02P$"
M% ,4    " !U2BM9$B+VN1@%   V&0  #0              @ $B#P  97A?
M-CDR-#$X+FAT;5!+ 0(4 Q0    ( '5**UE2:UM 4!H  &D;   (
M      "  644  !L;V=O+FIP9U!+ 0(4 Q0    ( '5**UEU7BP5B!,  .;D
M   1              "  =LN  !P<&EH+3(P,C0P-S,Q+GAS9%!+ 0(4 Q0
M   ( '5**UFN,FZ&J1   .;]   5              "  9)"  !P<&EH+3(P
M,C0P-S,Q7V-A;"YX;6Q02P$"% ,4    " !U2BM9X\@:[)%'  "9\ 4 %0
M            @ %N4P  <'!I:"TR,#(T,#<S,5]D968N>&UL4$L! A0#%
M  @ =4HK62#2A]"V:@  RKL% !4              ( !,IL  '!P:6@M,C R
M-# W,S%?;&%B+GAM;%!+ 0(4 Q0    ( '5**UFGF1F3X$L  (Z#!@ 5
M          "  1L& 0!P<&EH+3(P,C0P-S,Q7W!R92YX;6Q02P$"% ,4
M" !U2BM9LKE7Q] \ 0#-V1( %               @ $N4@$ <'!I:#(P,C0P
A-S,Q7S$P<2YH=&U02P4&      H "@!T @  ,(\"

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>77
<FILENAME>ppih20240731_10q_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:dei="http://xbrl.sec.gov/dei/2024"
  xmlns:ecd="http://xbrl.sec.gov/ecd/2024"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:ppih="http://investors.permapipe.com/20240731"
  xmlns:srt="http://fasb.org/srt/2024"
  xmlns:thunderdome="http://www.RDGFilings.com"
  xmlns:us-gaap="http://fasb.org/us-gaap/2024"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="ppih-20240731.xsd" xlink:type="simple"/>
    <context id="d_2024-02-01_2024-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-09-11">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2024-09-11</instant>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-04-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-04-30</endDate>
        </period>
    </context>
    <context id="i_2024-04-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="i_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="i_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="i_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="i_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="i_2024-04-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2024-04-30</instant>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-04-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-04-30</endDate>
        </period>
    </context>
    <context id="i_2023-04-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="i_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="i_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="i_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="i_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="i_2023-04-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2023-04-30</instant>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="i_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="i_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="i_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:TreasuryStockCommonMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="i_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="i_2023-07-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2023-07-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2023-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-01-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis">us-gaap:UnbilledRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis">us-gaap:UnbilledRevenuesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">ppih:FinanceLeaseObligationsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">ppih:FinanceLeaseObligationsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2015-12-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2015-12-31</instant>
        </period>
    </context>
    <context id="d_2016-01-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2016-01-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_BalanceSheetLocationAxis-OtherNoncurrentAssetsMember_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:OtherNoncurrentAssetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancingReceivablesPeriodPastDueAxis">us-gaap:FinancingReceivablesEqualToGreaterThan90DaysPastDueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2024-01-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2024-01-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ProductMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">us-gaap:TransferredAtPointInTimeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingInputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">ppih:SpecialtyPipingSystemsAndCoatingMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:TimingOfTransferOfGoodOrServiceAxis">ppih:TransferredAtPointInTimeUsingOutputMethodMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">ppih:PermaPipeCanadaLtdMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2016-12-31</instant>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="d_2023-02-01_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2024-01-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="d_2018-09-20_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-09-20</startDate>
            <endDate>2018-09-20</endDate>
        </period>
    </context>
    <context id="i_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-09-20</instant>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-09-17</instant>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">us-gaap:BaseRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="srt:StatementScenarioAxis">ppih:AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="srt:StatementScenarioAxis">ppih:AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SecuredOvernightFinancingRateSOFRMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:NorthAmericanLoanPartiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-09-17</instant>
        </period>
    </context>
    <context id="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:NorthAmericanLoanPartiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-09-17</startDate>
            <endDate>2021-09-17</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:RevolvingLinesNorthAmericaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-04-14</instant>
        </period>
    </context>
    <context id="d_2021-04-14_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-14</startDate>
            <endDate>2021-04-14</endDate>
        </period>
    </context>
    <context id="d_2021-04-14_2021-04-14_DebtInstrumentAxis-MortgageNoteSecuredByTennesseeManufacturingFacilityMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:MortgageNoteSecuredByTennesseeManufacturingFacilityMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-14</startDate>
            <endDate>2021-04-14</endDate>
        </period>
    </context>
    <context id="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-04-14</instant>
        </period>
    </context>
    <context id="d_2021-04-14_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-14</startDate>
            <endDate>2021-04-14</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:LandAndBuildingsInLebanonTennesseeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2023-08-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-08-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiariesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2021-12-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2022-11-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-11-30</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedByEgyptSubsidiaries2Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2022-03-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-03-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-EIBORMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:EIBORMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-EIBORMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:EIBORMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:CentralBankOfEqyptCbeRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:CentralBankOfEqyptCbeRateMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_VariableRateAxis-SIBORMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:VariableRateAxis">ppih:SIBORMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-WeightedAverageMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:WeightedAverageMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CreditFacilityAxis">ppih:ForeignRevolvingLinesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2023-06-30_DebtInstrumentAxis-PromissoryNoteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:PromissoryNoteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-30</instant>
        </period>
    </context>
    <context id="d_2016-07-28_2016-07-28_DebtInstrumentAxis-CanadianMortgageNoteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2016-07-28</startDate>
            <endDate>2016-07-28</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_DebtInstrumentAxis-CanadianMortgageNoteMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">ppih:CanadianMortgageNoteMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="d_2023-02-01_2024-01-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2024-01-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:LeaseContractualTermAxis">ppih:AbuDhabiLandLeaseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:FinanceLeasesAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">ppih:FinanceLeasesAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <context id="i_2021-10-04">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2021-10-04</instant>
        </period>
    </context>
    <context id="i_2022-12-07">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
        </entity>
        <period>
            <instant>2022-12-07</instant>
        </period>
    </context>
    <context id="i_2023-06-01_OwnershipAxis-JointVentureMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:OwnershipAxis">ppih:JointVentureMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-01</instant>
        </period>
    </context>
    <context id="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:OwnershipAxis">ppih:JointVentureMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-01</instant>
        </period>
    </context>
    <context id="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="dei:LegalEntityAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-01</instant>
        </period>
    </context>
    <context id="i_2023-06-01_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">us-gaap:RelatedPartyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2023-06-01</instant>
        </period>
    </context>
    <context id="d_2024-05-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-05-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-05-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-05-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-02-01</startDate>
            <endDate>2024-07-31</endDate>
        </period>
    </context>
    <context id="d_2023-02-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2023-02-01</startDate>
            <endDate>2023-07-31</endDate>
        </period>
    </context>
    <context id="i_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-07-31</instant>
        </period>
    </context>
    <context id="i_2024-01-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000914122</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">ppih:GulfInsulationGroupMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2024-01-31</instant>
        </period>
    </context>
    <unit id="Share">
        <measure>shares</measure>
    </unit>
    <unit id="NonApplicable">
        <measure>thunderdome:item</measure>
    </unit>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="USDPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="Pure">
        <measure>pure</measure>
    </unit>
    <unit id="Year">
        <measure>utr:Y</measure>
    </unit>
    <unit id="AED">
        <measure>iso4217:AED</measure>
    </unit>
    <unit id="EGP">
        <measure>iso4217:EGP</measure>
    </unit>
    <unit id="CAD">
        <measure>iso4217:CAD</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="d_2024-02-01_2024-07-31"
      id="thunderdome-EntityCentralIndexKey">0000914122</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2024-02-01_2024-07-31"
      id="thunderdome-EntityRegistrantName">Perma-Pipe International Holdings, Inc.</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2024-02-01_2024-07-31" id="ixv-7758">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2024-02-01_2024-07-31" id="ixv-7759">--01-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2024-02-01_2024-07-31" id="ixv-7760">Q2</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2024-02-01_2024-07-31" id="ixv-7761">2024</dei:DocumentFiscalYearFocus>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840644"
      unitRef="USD">713000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840645"
      unitRef="USD">699000</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i_2024-07-31"
      id="c116840715"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i_2024-01-31"
      id="c116840716"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2024-07-31"
      decimals="INF"
      id="c116840720"
      unitRef="USDPerShare">0.01</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2024-01-31"
      decimals="INF"
      id="c116840721"
      unitRef="USDPerShare">0.01</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2024-07-31"
      decimals="-7"
      id="c116840722"
      unitRef="Share">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2024-01-31"
      decimals="-7"
      id="c116840723"
      unitRef="Share">50000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840724"
      unitRef="Share">7978000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840726"
      unitRef="Share">7978000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840725"
      unitRef="Share">8017000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840727"
      unitRef="Share">8017000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840734"
      unitRef="Share">112000</us-gaap:TreasuryStockCommonShares>
    <us-gaap:TreasuryStockCommonShares
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840735"
      unitRef="Share">112000</us-gaap:TreasuryStockCommonShares>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-3"
      id="c116841022"
      unitRef="USD">0</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2023-05-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="INF"
      id="c116841028"
      unitRef="Pure">1</ppih:NumberOfMajorCustomers>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2023-02-01_2023-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="-3"
      id="c116841033"
      unitRef="Pure">0</ppih:NumberOfMajorCustomers>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2023-02-01_2024-01-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="INF"
      id="c116841038"
      unitRef="Pure">1</ppih:NumberOfMajorCustomers>
    <ppih:CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod contextRef="d_2024-02-01_2024-07-31" id="c116841079">P1Y</ppih:CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841227"
      unitRef="Share">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841238"
      unitRef="Share">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841239"
      unitRef="Share">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:DebtInstrumentTerm
      contextRef="d_2018-09-20_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      id="c116841349">P3Y</us-gaap:DebtInstrumentTerm>
    <us-gaap:DebtInstrumentTerm
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      id="c116841351">P5Y</us-gaap:DebtInstrumentTerm>
    <us-gaap:LesseeFinanceLeaseTermOfContract1
      contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      id="c116841381">P15Y</us-gaap:LesseeFinanceLeaseTermOfContract1>
    <ppih:LesseeFinanceLeaseNumberOfOptionsToExtend
      contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="INF"
      id="c116841384"
      unitRef="Pure">4</ppih:LesseeFinanceLeaseNumberOfOptionsToExtend>
    <us-gaap:LesseeFinanceLeaseRenewalTerm1
      contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      id="c116841385">P5Y</us-gaap:LesseeFinanceLeaseRenewalTerm1>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-5"
      id="c116841426"
      unitRef="USD">100000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:DebtInstrumentMaturityDate
      contextRef="d_2016-07-28_2016-07-28_DebtInstrumentAxis-CanadianMortgageNoteMember"
      id="c116841456">2042-12-23</us-gaap:DebtInstrumentMaturityDate>
    <us-gaap:DeferredFinanceCostsNet
      contextRef="i_2024-01-31_DebtInstrumentAxis-CanadianMortgageNoteMember"
      decimals="-5"
      id="c116841462"
      unitRef="USD">100000</us-gaap:DeferredFinanceCostsNet>
    <us-gaap:LesseeFinanceLeaseTermOfContract1
      contextRef="i_2024-07-31_RangeAxis-MinimumMember"
      id="c116841494">P1Y</us-gaap:LesseeFinanceLeaseTermOfContract1>
    <us-gaap:LesseeFinanceLeaseTermOfContract1
      contextRef="i_2024-07-31_RangeAxis-MaximumMember"
      id="c116841495">P30Y</us-gaap:LesseeFinanceLeaseTermOfContract1>
    <us-gaap:OperatingLeaseExpense
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-5"
      id="c116841510"
      unitRef="USD">600000</us-gaap:OperatingLeaseExpense>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841674"
      unitRef="Share">0</us-gaap:StockRepurchasedDuringPeriodShares>
    <ecd:Rule10b51ArrAdoptedFlag contextRef="d_2024-05-01_2024-07-31" id="c116841723">false</ecd:Rule10b51ArrAdoptedFlag>
    <ecd:NonRule10b51ArrAdoptedFlag contextRef="d_2024-05-01_2024-07-31" id="c116841724">false</ecd:NonRule10b51ArrAdoptedFlag>
    <ecd:Rule10b51ArrTrmntdFlag contextRef="d_2024-05-01_2024-07-31" id="c116841725">false</ecd:Rule10b51ArrTrmntdFlag>
    <ecd:NonRule10b51ArrTrmntdFlag contextRef="d_2024-05-01_2024-07-31" id="c116841726">false</ecd:NonRule10b51ArrTrmntdFlag>
    <dei:DocumentType contextRef="d_2024-02-01_2024-07-31" id="ixv-9218">10-Q</dei:DocumentType>
    <dei:DocumentQuarterlyReport contextRef="d_2024-02-01_2024-07-31" id="ixv-9219">true</dei:DocumentQuarterlyReport>
    <dei:DocumentPeriodEndDate contextRef="d_2024-02-01_2024-07-31" id="ixv-9220">2024-07-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2024-02-01_2024-07-31" id="ixv-9221">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2024-02-01_2024-07-31" id="ixv-9222">001-32530</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2024-02-01_2024-07-31" id="ixv-9223">DE</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2024-02-01_2024-07-31" id="ixv-9224">36-3922969</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2024-02-01_2024-07-31" id="ixv-9225">24900 Pitkin Road, Suite 309</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2024-02-01_2024-07-31" id="ixv-9226">Spring</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2024-02-01_2024-07-31" id="ixv-9227">TX</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2024-02-01_2024-07-31" id="ixv-9228">77386</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2024-02-01_2024-07-31" id="ixv-9229">847</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2024-02-01_2024-07-31" id="ixv-9230">966-1000</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2024-02-01_2024-07-31" id="ixv-9231">Common Stock, $.01 par value per share</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2024-02-01_2024-07-31" id="ixv-9232">PPIH</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2024-02-01_2024-07-31" id="ixv-9233">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityCurrentReportingStatus contextRef="d_2024-02-01_2024-07-31" id="ixv-9234">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2024-02-01_2024-07-31" id="ixv-9235">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2024-02-01_2024-07-31" id="ixv-9236">Non-accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness contextRef="d_2024-02-01_2024-07-31" id="ixv-9237">true</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany contextRef="d_2024-02-01_2024-07-31" id="ixv-9238">false</dei:EntityEmergingGrowthCompany>
    <dei:EntityShellCompany contextRef="d_2024-02-01_2024-07-31" id="ixv-9239">false</dei:EntityShellCompany>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i_2024-09-11"
      decimals="INF"
      id="ixv-9240"
      unitRef="Share">7977853</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840530"
      unitRef="USD">37513000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840531"
      unitRef="USD">35141000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840532"
      unitRef="USD">71834000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840533"
      unitRef="USD">64798000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfRevenue
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840534"
      unitRef="USD">24039000</us-gaap:CostOfRevenue>
    <us-gaap:CostOfRevenue
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840535"
      unitRef="USD">25677000</us-gaap:CostOfRevenue>
    <us-gaap:CostOfRevenue
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840536"
      unitRef="USD">47843000</us-gaap:CostOfRevenue>
    <us-gaap:CostOfRevenue
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840537"
      unitRef="USD">48559000</us-gaap:CostOfRevenue>
    <us-gaap:GrossProfit
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840538"
      unitRef="USD">13474000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840539"
      unitRef="USD">9464000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840540"
      unitRef="USD">23991000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840541"
      unitRef="USD">16239000</us-gaap:GrossProfit>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840543"
      unitRef="USD">5979000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840544"
      unitRef="USD">5283000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840545"
      unitRef="USD">12128000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840546"
      unitRef="USD">10742000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:SellingExpense
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840547"
      unitRef="USD">1353000</us-gaap:SellingExpense>
    <us-gaap:SellingExpense
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116840548"
      unitRef="USD">1490000</us-gaap:SellingExpense>
    <us-gaap:SellingExpense
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840549"
      unitRef="USD">2588000</us-gaap:SellingExpense>
    <us-gaap:SellingExpense
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116840550"
      unitRef="USD">2730000</us-gaap:SellingExpense>
    <us-gaap:OperatingExpenses
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840551"
      unitRef="USD">7332000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840552"
      unitRef="USD">6773000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840553"
      unitRef="USD">14716000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840554"
      unitRef="USD">13472000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840555"
      unitRef="USD">6142000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840556"
      unitRef="USD">2691000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840557"
      unitRef="USD">9275000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840558"
      unitRef="USD">2767000</us-gaap:OperatingIncomeLoss>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840559"
      unitRef="USD">-514000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840560"
      unitRef="USD">-636000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840561"
      unitRef="USD">-1021000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:InterestIncomeExpenseNet
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840562"
      unitRef="USD">-1148000</us-gaap:InterestIncomeExpenseNet>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840563"
      unitRef="USD">-38000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840564"
      unitRef="USD">81000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840565"
      unitRef="USD">-105000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840566"
      unitRef="USD">154000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-4"
      id="c116840567"
      unitRef="USD">5590000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840568"
      unitRef="USD">2136000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840569"
      unitRef="USD">8149000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840570"
      unitRef="USD">1773000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840571"
      unitRef="USD">1306000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840572"
      unitRef="USD">966000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840573"
      unitRef="USD">2076000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840574"
      unitRef="USD">1725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ProfitLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840575"
      unitRef="USD">4284000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116840576"
      unitRef="USD">1170000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840577"
      unitRef="USD">6073000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840578"
      unitRef="USD">48000</us-gaap:ProfitLoss>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840579"
      unitRef="USD">995000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840580"
      unitRef="USD">148000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840581"
      unitRef="USD">1341000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840582"
      unitRef="USD">148000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840583"
      unitRef="USD">3289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840584"
      unitRef="USD">1022000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840585"
      unitRef="USD">4732000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-5"
      id="c116840586"
      unitRef="USD">-100000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840588"
      unitRef="Share">7954000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840589"
      unitRef="Share">8029000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840590"
      unitRef="Share">7930000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840591"
      unitRef="Share">8017000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840592"
      unitRef="Share">8125000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840593"
      unitRef="Share">8139000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840594"
      unitRef="Share">7987000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840595"
      unitRef="Share">8017000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2024-05-01_2024-07-31"
      decimals="INF"
      id="c116840597"
      unitRef="USDPerShare">0.41</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-05-01_2023-07-31"
      decimals="INF"
      id="c116840598"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2024-02-01_2024-07-31"
      decimals="INF"
      id="c116840599"
      unitRef="USDPerShare">0.6</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-02-01_2023-07-31"
      decimals="INF"
      id="c116840600"
      unitRef="USDPerShare">-0.01</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2024-05-01_2024-07-31"
      decimals="INF"
      id="c116840601"
      unitRef="USDPerShare">0.4</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-05-01_2023-07-31"
      decimals="INF"
      id="c116840602"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2024-02-01_2024-07-31"
      decimals="INF"
      id="c116840603"
      unitRef="USDPerShare">0.59</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-02-01_2023-07-31"
      decimals="INF"
      id="c116840604"
      unitRef="USDPerShare">-0.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:ProfitLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840613"
      unitRef="USD">4284000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116840614"
      unitRef="USD">1170000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840615"
      unitRef="USD">6073000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840616"
      unitRef="USD">48000</us-gaap:ProfitLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840618"
      unitRef="USD">-192000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840619"
      unitRef="USD">339000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840620"
      unitRef="USD">-1607000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840621"
      unitRef="USD">-98000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840622"
      unitRef="USD">4092000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840623"
      unitRef="USD">1509000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840624"
      unitRef="USD">4466000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116840625"
      unitRef="USD">-50000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840626"
      unitRef="USD">995000</us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840627"
      unitRef="USD">148000</us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840628"
      unitRef="USD">1341000</us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840629"
      unitRef="USD">148000</us-gaap:ComprehensiveIncomeNetOfTaxAttributableToNoncontrollingInterest>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840630"
      unitRef="USD">3097000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840631"
      unitRef="USD">1361000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840632"
      unitRef="USD">3125000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840633"
      unitRef="USD">-198000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840638"
      unitRef="USD">9455000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840639"
      unitRef="USD">5845000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:RestrictedCashCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840640"
      unitRef="USD">1426000</us-gaap:RestrictedCashCurrent>
    <us-gaap:RestrictedCashCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840641"
      unitRef="USD">1395000</us-gaap:RestrictedCashCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840642"
      unitRef="USD">39927000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840643"
      unitRef="USD">46646000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840646"
      unitRef="USD">15823000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840647"
      unitRef="USD">15541000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840648"
      unitRef="USD">13197000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840649"
      unitRef="USD">9697000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116840650"
      unitRef="USD">17850000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840651"
      unitRef="USD">16597000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:ContractWithCustomerAssetNetCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840652"
      unitRef="USD">3085000</us-gaap:ContractWithCustomerAssetNetCurrent>
    <us-gaap:ContractWithCustomerAssetNetCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840653"
      unitRef="USD">3097000</us-gaap:ContractWithCustomerAssetNetCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840654"
      unitRef="USD">100763000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840655"
      unitRef="USD">98818000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840657"
      unitRef="USD">37518000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116840658"
      unitRef="USD">37620000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840659"
      unitRef="USD">6938000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840660"
      unitRef="USD">6467000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840661"
      unitRef="USD">7866000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840662"
      unitRef="USD">7919000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:Goodwill
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840663"
      unitRef="USD">2156000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840664"
      unitRef="USD">2222000</us-gaap:Goodwill>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840665"
      unitRef="USD">3946000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840666"
      unitRef="USD">2665000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:AssetsNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840667"
      unitRef="USD">58424000</us-gaap:AssetsNoncurrent>
    <us-gaap:AssetsNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840668"
      unitRef="USD">56893000</us-gaap:AssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840669"
      unitRef="USD">159187000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840670"
      unitRef="USD">155711000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840673"
      unitRef="USD">21411000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840674"
      unitRef="USD">25323000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840675"
      unitRef="USD">1358000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840676"
      unitRef="USD">1214000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedSalesCommissionCurrent
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116840677"
      unitRef="USD">5210000</us-gaap:AccruedSalesCommissionCurrent>
    <us-gaap:AccruedSalesCommissionCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840678"
      unitRef="USD">4523000</us-gaap:AccruedSalesCommissionCurrent>
    <us-gaap:LinesOfCreditCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840679"
      unitRef="USD">6699000</us-gaap:LinesOfCreditCurrent>
    <us-gaap:LinesOfCreditCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840680"
      unitRef="USD">5519000</us-gaap:LinesOfCreditCurrent>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840681"
      unitRef="USD">5522000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840682"
      unitRef="USD">4071000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <ppih:CustomerDepositsCurrent1
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840683"
      unitRef="USD">5949000</ppih:CustomerDepositsCurrent1>
    <ppih:CustomerDepositsCurrent1
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840684"
      unitRef="USD">4264000</ppih:CustomerDepositsCurrent1>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840685"
      unitRef="USD">965000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840686"
      unitRef="USD">914000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840687"
      unitRef="USD">6178000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840688"
      unitRef="USD">9039000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840689"
      unitRef="USD">704000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840690"
      unitRef="USD">495000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840691"
      unitRef="USD">2475000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116840692"
      unitRef="USD">2380000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840693"
      unitRef="USD">56471000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840694"
      unitRef="USD">57742000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LongTermDebtNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840696"
      unitRef="USD">8912000</us-gaap:LongTermDebtNoncurrent>
    <us-gaap:LongTermDebtNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840697"
      unitRef="USD">9035000</us-gaap:LongTermDebtNoncurrent>
    <ppih:LongtermDebtAndLeaseObligationNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840698"
      unitRef="USD">3974000</ppih:LongtermDebtAndLeaseObligationNoncurrent>
    <ppih:LongtermDebtAndLeaseObligationNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840699"
      unitRef="USD">4229000</ppih:LongtermDebtAndLeaseObligationNoncurrent>
    <us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116840700"
      unitRef="USD">1180000</us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent>
    <us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840701"
      unitRef="USD">1212000</us-gaap:DeferredCompensationLiabilityClassifiedNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840702"
      unitRef="USD">1165000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840703"
      unitRef="USD">1217000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840704"
      unitRef="USD">6689000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116840705"
      unitRef="USD">6270000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:LongTermLoansPayable
      contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-3"
      id="c116840706"
      unitRef="USD">2753000</us-gaap:LongTermLoansPayable>
    <us-gaap:LongTermLoansPayable
      contextRef="i_2024-01-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-3"
      id="c116840707"
      unitRef="USD">2753000</us-gaap:LongTermLoansPayable>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840708"
      unitRef="USD">1403000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840709"
      unitRef="USD">1275000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:LiabilitiesNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840710"
      unitRef="USD">26076000</us-gaap:LiabilitiesNoncurrent>
    <us-gaap:LiabilitiesNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840711"
      unitRef="USD">25991000</us-gaap:LiabilitiesNoncurrent>
    <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840712"
      unitRef="USD">8057000</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
    <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840713"
      unitRef="USD">6266000</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
    <us-gaap:CommonStockValue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840718"
      unitRef="USD">81000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116840719"
      unitRef="USD">80000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapital
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840728"
      unitRef="USD">59808000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:AdditionalPaidInCapital
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840729"
      unitRef="USD">60063000</us-gaap:AdditionalPaidInCapital>
    <us-gaap:TreasuryStockCommonValue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840731"
      unitRef="USD">968000</us-gaap:TreasuryStockCommonValue>
    <us-gaap:TreasuryStockCommonValue
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840732"
      unitRef="USD">968000</us-gaap:TreasuryStockCommonValue>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116840737"
      unitRef="USD">16820000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840738"
      unitRef="USD">12088000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840740"
      unitRef="USD">-7158000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840741"
      unitRef="USD">-5551000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840743"
      unitRef="USD">68583000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840744"
      unitRef="USD">65712000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840746"
      unitRef="USD">159187000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840747"
      unitRef="USD">155711000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-4"
      id="c116840756"
      unitRef="USD">80000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840757"
      unitRef="USD">60063000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840758"
      unitRef="USD">12088000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840759"
      unitRef="USD">-968000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840760"
      unitRef="USD">-5551000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116840761"
      unitRef="USD">65712000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840762"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840763"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840764"
      unitRef="USD">1443000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840765"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840766"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-04-30"
      decimals="-3"
      id="c116840767"
      unitRef="USD">1443000</us-gaap:NetIncomeLoss>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840768"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840769"
      unitRef="USD">228000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840770"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840771"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840772"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-02-01_2024-04-30"
      decimals="-3"
      id="c116840773"
      unitRef="USD">228000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840774"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840775"
      unitRef="USD">-421000</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840776"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840777"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840778"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-04-30"
      decimals="-3"
      id="c116840779"
      unitRef="USD">-421000</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840780"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840781"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840782"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840783"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840784"
      unitRef="USD">-1415000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-02-01_2024-04-30"
      decimals="-3"
      id="c116840785"
      unitRef="USD">-1415000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-4"
      id="c116840786"
      unitRef="USD">80000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-4"
      id="c116840787"
      unitRef="USD">59870000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840788"
      unitRef="USD">13531000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840789"
      unitRef="USD">-968000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840790"
      unitRef="USD">-6966000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-04-30"
      decimals="-3"
      id="c116840791"
      unitRef="USD">65547000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840792"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840793"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840794"
      unitRef="USD">3289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840795"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840796"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840797"
      unitRef="USD">3289000</us-gaap:NetIncomeLoss>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840798"
      unitRef="USD">1000</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-4"
      id="c116840799"
      unitRef="USD">-210000</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840800"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840801"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840802"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840803"
      unitRef="USD">-209000</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840804"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840805"
      unitRef="USD">177000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840806"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840807"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840808"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840809"
      unitRef="USD">177000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840810"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840811"
      unitRef="USD">-29000</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840812"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840813"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840814"
      unitRef="USD">0</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840815"
      unitRef="USD">-29000</ppih:AdjustmentsToAdditionalPaidInCapitalReclassificationToNoncontrollingInterest>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840816"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840817"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840818"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840819"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840820"
      unitRef="USD">-192000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116840821"
      unitRef="USD">-192000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840822"
      unitRef="USD">81000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840823"
      unitRef="USD">59808000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-4"
      id="c116840824"
      unitRef="USD">16820000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840825"
      unitRef="USD">-968000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840826"
      unitRef="USD">-7158000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840827"
      unitRef="USD">68583000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-4"
      id="c116840834"
      unitRef="USD">80000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840835"
      unitRef="USD">62562000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840836"
      unitRef="USD">1617000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840837"
      unitRef="USD">-26000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840838"
      unitRef="USD">-6449000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-01-31"
      decimals="-3"
      id="c116840839"
      unitRef="USD">57784000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840840"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840841"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840842"
      unitRef="USD">-1123000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840843"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840844"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-04-30"
      decimals="-3"
      id="c116840845"
      unitRef="USD">-1123000</us-gaap:NetIncomeLoss>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840846"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840847"
      unitRef="USD">229000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840848"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840849"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840850"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-02-01_2023-04-30"
      decimals="-3"
      id="c116840851"
      unitRef="USD">229000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840852"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840853"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840854"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840855"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840856"
      unitRef="USD">-437000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-02-01_2023-04-30"
      decimals="-3"
      id="c116840857"
      unitRef="USD">-437000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-4"
      id="c116840858"
      unitRef="USD">80000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840859"
      unitRef="USD">62791000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840860"
      unitRef="USD">494000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840861"
      unitRef="USD">-26000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840862"
      unitRef="USD">-6886000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-04-30"
      decimals="-3"
      id="c116840863"
      unitRef="USD">56453000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840864"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840865"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840866"
      unitRef="USD">1022000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840867"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840868"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840869"
      unitRef="USD">1022000</us-gaap:NetIncomeLoss>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840870"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840871"
      unitRef="USD">-274000</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840872"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840873"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840874"
      unitRef="USD">0</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840875"
      unitRef="USD">-274000</ppih:CommonStockIssuedUnderStockPlansNetOfSharesUsedForTaxWithholding>
    <ppih:TreasuryStockValueAcquired
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840876"
      unitRef="USD">1000</ppih:TreasuryStockValueAcquired>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840877"
      unitRef="USD">-0</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840878"
      unitRef="USD">-0</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840879"
      unitRef="USD">312000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840880"
      unitRef="USD">-0</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:TreasuryStockValueAcquiredCostMethod
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840881"
      unitRef="USD">311000</us-gaap:TreasuryStockValueAcquiredCostMethod>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840882"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840883"
      unitRef="USD">245000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840884"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840885"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840886"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840887"
      unitRef="USD">245000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840888"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840889"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840890"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840891"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840892"
      unitRef="USD">339000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116840893"
      unitRef="USD">339000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c116840894"
      unitRef="USD">81000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c116840895"
      unitRef="USD">62762000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c116840896"
      unitRef="USD">1516000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-TreasuryStockCommonMember"
      decimals="-3"
      id="c116840897"
      unitRef="USD">-338000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c116840898"
      unitRef="USD">-6547000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2023-07-31"
      decimals="-3"
      id="c116840899"
      unitRef="USD">57474000</us-gaap:StockholdersEquity>
    <us-gaap:SharesOutstanding
      contextRef="i_2024-01-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840902"
      unitRef="Share">8016781</us-gaap:SharesOutstanding>
    <us-gaap:SharesOutstanding
      contextRef="i_2023-01-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840903"
      unitRef="Share">8007002</us-gaap:SharesOutstanding>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2024-02-01_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840904"
      unitRef="Share">73087</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2023-02-01_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840905"
      unitRef="Share">66726</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:SharesOutstanding
      contextRef="i_2024-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840906"
      unitRef="Share">0</us-gaap:SharesOutstanding>
    <us-gaap:SharesOutstanding
      contextRef="i_2023-01-31_RestatementAxis-RestatementAdjustmentMember_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840907"
      unitRef="Share">-56947</us-gaap:SharesOutstanding>
    <us-gaap:SharesOutstanding
      contextRef="i_2024-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840908"
      unitRef="Share">8089868</us-gaap:SharesOutstanding>
    <us-gaap:SharesOutstanding
      contextRef="i_2023-07-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c116840909"
      unitRef="Share">8016781</us-gaap:SharesOutstanding>
    <us-gaap:ProfitLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840915"
      unitRef="USD">6073000</us-gaap:ProfitLoss>
    <us-gaap:ProfitLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840916"
      unitRef="USD">48000</us-gaap:ProfitLoss>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840918"
      unitRef="USD">1717000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840919"
      unitRef="USD">1791000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840920"
      unitRef="USD">203000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:DeferredIncomeTaxesAndTaxCredits
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840921"
      unitRef="USD">191000</us-gaap:DeferredIncomeTaxesAndTaxCredits>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840922"
      unitRef="USD">396000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840923"
      unitRef="USD">456000</us-gaap:ShareBasedCompensation>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840924"
      unitRef="USD">43000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840925"
      unitRef="USD">8000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840926"
      unitRef="USD">-29000</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:GainLossOnDispositionOfAssets
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840927"
      unitRef="USD">5000</us-gaap:GainLossOnDispositionOfAssets>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840929"
      unitRef="USD">-6090000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840930"
      unitRef="USD">9865000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840931"
      unitRef="USD">809000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840932"
      unitRef="USD">-882000</us-gaap:IncreaseDecreaseInInventories>
    <ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840933"
      unitRef="USD">221000</ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability>
    <ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840934"
      unitRef="USD">2495000</ppih:IncreaseDecreaseInContractWithCustomerAssetAndLiability>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840935"
      unitRef="USD">-3064000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840936"
      unitRef="USD">8044000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840937"
      unitRef="USD">-48000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116840938"
      unitRef="USD">-1650000</us-gaap:IncreaseDecreaseInEmployeeRelatedLiabilities>
    <ppih:IncreaseDecreaseInCustomerDeposits1
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840939"
      unitRef="USD">1810000</ppih:IncreaseDecreaseInCustomerDeposits1>
    <ppih:IncreaseDecreaseInCustomerDeposits1
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840940"
      unitRef="USD">534000</ppih:IncreaseDecreaseInCustomerDeposits1>
    <us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840941"
      unitRef="USD">-789000</us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable>
    <us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840942"
      unitRef="USD">-766000</us-gaap:IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840943"
      unitRef="USD">3209000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840944"
      unitRef="USD">-989000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables
      contextRef="d_2024-02-01_2024-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember"
      decimals="-3"
      id="c116840945"
      unitRef="USD">1857000</us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables>
    <us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables
      contextRef="d_2023-02-01_2023-07-31_AccountsNotesLoansAndFinancingReceivablesByBillingStatusTypeAxis-UnbilledRevenuesMember"
      decimals="-3"
      id="c116840946"
      unitRef="USD">8000</us-gaap:IncreaseDecreaseInAccountsAndOtherReceivables>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840947"
      unitRef="USD">2974000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840948"
      unitRef="USD">-389000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840949"
      unitRef="USD">3832000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840950"
      unitRef="USD">3533000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840952"
      unitRef="USD">3180000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840953"
      unitRef="USD">6797000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:ProceedsFromInsuranceSettlementInvestingActivities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840954"
      unitRef="USD">0</us-gaap:ProceedsFromInsuranceSettlementInvestingActivities>
    <us-gaap:ProceedsFromInsuranceSettlementInvestingActivities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840955"
      unitRef="USD">5000</us-gaap:ProceedsFromInsuranceSettlementInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840956"
      unitRef="USD">-3180000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840957"
      unitRef="USD">-6792000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116840959"
      unitRef="USD">39540000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:ProceedsFromLinesOfCredit
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116840960"
      unitRef="USD">96920000</us-gaap:ProceedsFromLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840961"
      unitRef="USD">36887000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfLinesOfCredit
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840962"
      unitRef="USD">92091000</us-gaap:RepaymentsOfLinesOfCredit>
    <us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations
      contextRef="d_2024-02-01_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-3"
      id="c116840963"
      unitRef="USD">91000</us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations>
    <us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations
      contextRef="d_2023-02-01_2023-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-3"
      id="c116840964"
      unitRef="USD">56000</us-gaap:RepaymentsOfDebtAndCapitalLeaseObligations>
    <us-gaap:RepaymentsOfOtherDebt
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840965"
      unitRef="USD">117000</us-gaap:RepaymentsOfOtherDebt>
    <us-gaap:RepaymentsOfOtherDebt
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840966"
      unitRef="USD">124000</us-gaap:RepaymentsOfOtherDebt>
    <us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840967"
      unitRef="USD">8000</us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities>
    <us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840968"
      unitRef="USD">-178000</us-gaap:IncreaseDecreaseInOutstandingChecksFinancingActivities>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2024-02-01_2024-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember"
      decimals="-3"
      id="c116840969"
      unitRef="USD">16000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2023-02-01_2023-07-31_LongtermDebtTypeAxis-FinanceLeaseObligationsMember"
      decimals="-3"
      id="c116840970"
      unitRef="USD">154000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840971"
      unitRef="USD">-0</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840972"
      unitRef="USD">312000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840973"
      unitRef="USD">-201000</ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested>
    <ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840974"
      unitRef="USD">-273000</ppih:ProceedsFromPaymentsForStockOptionsExercisedAndTaxesRelatedToRestrictedSharesVested>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840975"
      unitRef="USD">2236000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840976"
      unitRef="USD">3732000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840977"
      unitRef="USD">753000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840978"
      unitRef="USD">61000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840979"
      unitRef="USD">3641000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840980"
      unitRef="USD">534000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116840981"
      unitRef="USD">7240000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2023-01-31"
      decimals="-3"
      id="c116840982"
      unitRef="USD">6793000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116840983"
      unitRef="USD">10881000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2023-07-31"
      decimals="-3"
      id="c116840984"
      unitRef="USD">7327000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:InterestPaidNet
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-6"
      id="c116840986"
      unitRef="USD">1000000</us-gaap:InterestPaidNet>
    <us-gaap:InterestPaidNet
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840987"
      unitRef="USD">1302000</us-gaap:InterestPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840988"
      unitRef="USD">2436000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840989"
      unitRef="USD">2234000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840990"
      unitRef="USD">0</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840991"
      unitRef="USD">139000</us-gaap:RightOfUseAssetObtainedInExchangeForFinanceLeaseLiability>
    <us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116840992"
      unitRef="USD">0</us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1>
    <us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116840993"
      unitRef="USD">4357000</us-gaap:NoncashOrPartNoncashAcquisitionFixedAssetsAcquired1>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734961">
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;1&lt;/em&gt; - Basis of presentation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The interim consolidated financial statements of Perma-Pipe International Holdings, Inc., and subsidiaries (collectively, "PPIH", "Company", or "Registrant") are unaudited, but include all adjustments that the Company's management considers necessary to fairly state the financial position and results of operations for the periods presented. These adjustments consist of normal recurring adjustments. Certain information and footnote disclosures have been omitted pursuant to Securities and Exchange Commission ("SEC") rules and regulations. The consolidated balance sheet as of&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt; is derived from the audited consolidated balance sheet as of that date. The results of operations for any interim period are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; necessarily indicative of future or annual results. Interim financial statements should be read in conjunction with the financial statements and the notes thereto included in the Company's latest Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K. The Company's fiscal year ends on &lt;em style="font: inherit;"&gt; January 31. &lt;/em&gt;Years and balances described as&#160;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt; are for the fiscal year ending &lt;em style="font: inherit;"&gt; January 31,&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2025&lt;/em&gt;&#160;and for the fiscal year ended&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Significant New Accounting Policies&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Refer to the Company's Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K for the year ended &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;&#160;as filed with the SEC on &lt;em style="font: inherit;"&gt; April 26, 2024&#160;&lt;/em&gt;for discussion of the Company's significant accounting policies.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;During the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; adopt or make changes to any new or existing accounting policies.&lt;/p&gt;&lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;/p&gt;
  </us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock contextRef="d_2024-02-01_2024-07-31" id="c116842838">&lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Significant New Accounting Policies&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Refer to the Company's Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K for the year ended &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;&#160;as filed with the SEC on &lt;em style="font: inherit;"&gt; April 26, 2024&#160;&lt;/em&gt;for discussion of the Company's significant accounting policies.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;During the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; adopt or make changes to any new or existing accounting policies.&lt;/p&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:SegmentReportingDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734962">
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;2&lt;/em&gt; - Business segment reporting&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company is engaged in the manufacture and sale of products in one reportable segment: Piping Systems.&#160;The Company engineers, manufactures and sells pre-insulated specialty piping systems, and leak detection systems. Pre-insulated specialty piping systems include: (i) insulated and jacketed district heating and cooling piping systems for efficient energy distribution from central energy plants to multiple locations, (ii) primary and secondary containment piping systems for transporting chemicals, hazardous fluids and petroleum products,&#160;(iii) the coating and/or insulation of oil and gas gathering and transmission pipelines, and (iv) liquid and powder based anti-corrosion coatings applied both to the external and internal surfaces of steel pipe, including shapes like bends, reducers, tees, and other spools/fittings used in pipelines for the transportation of oil and&#160;gas products and potable water.&#160;The Company's leak detection systems are sold with its piping systems or on a stand-alone basis&#160;to monitor areas where fluid intrusion &lt;em style="font: inherit;"&gt; may &lt;/em&gt;contaminate the environment, endanger personal safety, cause a fire hazard, impair essential services or damage equipment or property.&lt;/p&gt;
  </us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:NumberOfReportableSegments
      contextRef="d_2024-02-01_2024-07-31"
      decimals="INF"
      id="c116841005"
      unitRef="Pure">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734963">
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;3&lt;/em&gt; - Accounts receivable&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The majority of the Company's accounts receivable are due from geographically dispersed contractors and manufacturing companies. Credit is extended based on an evaluation of a customer's financial condition. In the United States, collateral is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; generally required. In the United Arab Emirates ("U.A.E."), Saudi Arabia, Egypt and India&#160;letters of credit are usually obtained for significant orders. Accounts receivable are due within various time periods specified in the terms applicable to the specific customer and are stated as&#160;amounts due from customers net of an allowance for claims and credit losses. Standard payment terms are generally net &lt;em style="font: inherit;"&gt;30&lt;/em&gt; to &lt;em style="font: inherit;"&gt;60&lt;/em&gt; days. The allowance for credit losses&#160;is&#160;based on specifically identified amounts in customers' accounts, where future collectability is deemed uncertain. Management &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exercise its judgment in adjusting the provision as a consequence of known items, such as current economic factors and credit trends. Past due trade accounts receivable balances are written off when the Company's collection efforts have been unsuccessful in collecting the amount due and the amount is deemed uncollectible. The write off is recorded against the allowance for credit losses.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;In &lt;em style="font: inherit;"&gt;2015,&lt;/em&gt; the Company completed a project in the Middle East with billings in the aggregate amount of approximately $41.9 million. The system has &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet been commissioned by the customer. Nevertheless, the Company has received&#160;approximately $40.1&#160;million&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, with a remaining balance due in the amount of $1.8 million, all of which pertains to retention clauses within the agreements with&#160;the Company's customer, and which become payable by the customer when this project is fully tested and commissioned. Of this amount, $1.3 million&#160;is&#160;classified in other&lt;span style="background-color:#ffffff"&gt;&#160;long-term assets on the Company's consolidated balance sheets.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Company has been actively involved&#160;in ongoing efforts to collect this&#160;outstanding balance. The Company continues to engage with the customer to ensure full payment of the open balances, and during the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, and at various times throughout &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; the Company received&#160;partial payments to settle $0.3&#160;million and $0.6&#160;million, respectively, of the customer's outstanding balances. Further, the Company has been engaged by the customer to perform additional work in &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; under customary trade terms that supports the continued cooperation between the Company and the customer. As a result, the Company did &lt;span style="-sec-ix-hidden:c116841022"&gt;not&lt;/span&gt; reserve any allowance against the remaining outstanding balances as of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;. However, if the Company's efforts to collect on this account are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; successful, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;recognize an allowance for all, or substantially all, of any such then uncollected amounts.&#160;&lt;/p&gt;
   &lt;p style="text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;For the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;,&#160;no&#160;individual customer accounted for greater than&#160;&lt;em style="font: inherit;"&gt;10%&lt;/em&gt;&#160;of the Company's consolidated net sales, and during the same period in &lt;em style="font: inherit;"&gt;2023,&lt;/em&gt; &lt;span style="-sec-ix-hidden:c116841028"&gt;one&lt;/span&gt; customer accounted for greater than &lt;em style="font: inherit;"&gt;10%&lt;/em&gt; of the Company's consolidated net sales. For the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;,&#160;no individual customer accounted for greater than&#160;&lt;em style="font: inherit;"&gt;10%&lt;/em&gt; of the Company's consolidated net sales.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;As of&#160;&lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;,&#160;&lt;/span&gt;no&lt;span style="background-color:#ffffff;"&gt;&#160;individual customer&#160;accounted for more than&#160;&lt;/span&gt;&lt;em style="font: inherit;"&gt;10%&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;of the Company's accounts receivable,&#160;and &lt;span style="-sec-ix-hidden:c116841038"&gt;one&lt;/span&gt; customer accounted for more than&#160;&lt;/span&gt;&lt;em style="font: inherit;"&gt;10%&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;of the Company's accounts receivable, respectively.&lt;/span&gt;&lt;/p&gt;
  </us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock>
    <us-gaap:AccountsReceivableNet
      contextRef="i_2015-12-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841012"
      unitRef="USD">41900000</us-gaap:AccountsReceivableNet>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2016-01-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841014"
      unitRef="USD">-40100000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:AccountsReceivableNet
      contextRef="i_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841015"
      unitRef="USD">1800000</us-gaap:AccountsReceivableNet>
    <us-gaap:AccountsReceivableNet
      contextRef="i_2024-07-31_BalanceSheetLocationAxis-OtherNoncurrentAssetsMember_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841016"
      unitRef="USD">1300000</us-gaap:AccountsReceivableNet>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2024-02-01_2024-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841019"
      unitRef="USD">-300000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2023-02-01_2023-07-31_FinancingReceivablesPeriodPastDueAxis-FinancingReceivablesEqualToGreaterThan90DaysPastDueMember"
      decimals="-5"
      id="c116841020"
      unitRef="USD">-600000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2024-05-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="-3"
      id="c116841025"
      unitRef="Pure">0</ppih:NumberOfMajorCustomers>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-SalesRevenueNetMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="-3"
      id="c116841032"
      unitRef="Pure">0</ppih:NumberOfMajorCustomers>
    <ppih:NumberOfMajorCustomers
      contextRef="d_2024-02-01_2024-07-31_ConcentrationRiskByBenchmarkAxis-AccountsReceivableMember_ConcentrationRiskByTypeAxis-CustomerConcentrationRiskMember"
      decimals="-3"
      id="c116841035"
      unitRef="Pure">0</ppih:NumberOfMajorCustomers>
    <us-gaap:RevenueFromContractWithCustomerTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734964">
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;4&lt;/em&gt; - Revenue recognition&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company accounts for its revenues under Accounting Standards Codification ("ASC") &lt;em style="font: inherit;"&gt;606,&lt;/em&gt; &lt;i&gt;Revenue from Contracts with Customers&lt;/i&gt;.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Revenue from contracts with customers&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company defines a contract as an agreement that has approval and commitment from both parties, defined rights and identifiable payment terms, which ensures the contract has commercial substance and that collectability is reasonably assured.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company&#x2019;s standard revenue transactions are classified into &lt;em style="font: inherit;"&gt;two&lt;/em&gt; main categories:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt;&lt;td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Systems and Coating&#160;- which include all bundled products in which Perma-Pipe engineers, and manufactures pre-insulated specialty piping systems mainly relating to the district heating and cooling and oil &amp;amp; gas markets.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt;&lt;td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 18pt; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Products - which include cables, leak detection products, heat trace products, material/goods &lt;em style="font: inherit;"&gt;not&lt;/em&gt; bundled with piping or flowline systems, and field services &lt;em style="font: inherit;"&gt;not&lt;/em&gt; bundled into a project contract.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;In accordance with ASC &lt;em style="font: inherit;"&gt;606&lt;/em&gt;-&lt;em style="font: inherit;"&gt;10&lt;/em&gt;-&lt;em style="font: inherit;"&gt;25&lt;/em&gt;-&lt;em style="font: inherit;"&gt;27&lt;/em&gt; through &lt;em style="font: inherit;"&gt;29,&lt;/em&gt; the Company recognizes specialty piping and coating systems revenue over time as the manufacturing process progresses because &lt;em style="font: inherit;"&gt;one&lt;/em&gt; of the following conditions exist:&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;the customer owns the material that is being coated, so the customer controls the asset and thus the work-in-process; or&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 3.3%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;2&lt;/em&gt;)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 93.4%; font-family: Times New Roman; font-size: 10pt; vertical-align: top;"&gt; &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;the customer controls the work-in-process due to the custom nature of the pre-insulated, fabricated system being manufactured, which has &lt;em style="font: inherit;"&gt;no&lt;/em&gt; alternative future use, and there is a right to payment for work performed&#160;to date plus profit margin.&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: justify; text-indent: -9pt; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;Products revenue is recognized when goods are shipped or services are performed (ASC &lt;em style="font: inherit;"&gt;606&lt;/em&gt;-&lt;em style="font: inherit;"&gt;10&lt;/em&gt;-&lt;em style="font: inherit;"&gt;25&lt;/em&gt;-&lt;em style="font: inherit;"&gt;30&lt;/em&gt;).&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;A breakdown of the Company's revenues by revenue class for the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&#160;are as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Products&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2,795&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2,146&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;4,988&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Specialty Piping Systems and Coating&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Revenue recognized under input method&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;12,613&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;34&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;12,801&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;22,752&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;23,139&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Revenue recognized under output method&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22,105&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;20,194&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;43,034&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;36,671&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;37,513&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;35,141&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;71,834&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;64,798&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;The input method as noted in ASC &lt;em style="font: inherit;"&gt;606&lt;/em&gt;-&lt;em style="font: inherit;"&gt;10&lt;/em&gt;-&lt;em style="font: inherit;"&gt;55&lt;/em&gt;-&lt;em style="font: inherit;"&gt;20&lt;/em&gt; is used by certain operating entities to measure revenue by the costs incurred to date relative to the estimated costs to satisfy the contract over time. Generally, these contracts are considered a single performance obligation satisfied over time and due to the custom nature of the goods and services, the "over time" method is the most faithful depiction of the Company&#x2019;s performance as it measures the value of the goods and services transferred to the customer. Costs include all material, labor, and direct costs incurred to satisfy the performance obligations of the contract. Revenue recognition begins when projects costs are incurred. &#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The output method as noted in ASC &lt;em style="font: inherit;"&gt;606&lt;/em&gt;-&lt;em style="font: inherit;"&gt;10&lt;/em&gt;-&lt;em style="font: inherit;"&gt;55&lt;/em&gt;-&lt;em style="font: inherit;"&gt;17&lt;/em&gt; is used by all&#160;other operating entities to measure revenue by the direct measurement of the outputs produced relative to the remaining goods promised under the contract. Due to the types of end customers, generally these contracts require formal inspection protocols or specific export documentation for units produced, or produced and shipped, therefore, the output method is the most faithful depiction of the Company&#x2019;s performance. Depending on the conditions of the contract, revenue &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be recognized based on units produced, inspected and held by the Company prior to shipment or on units produced, inspected and shipped.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;Some of the Company&#x2019;s operating entities invoice and collect milestones or other contractual obligations prior to the transfer of goods and services, but do&#160;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; recognize revenue until the performance obligations are satisfied under the methods discussed above.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;Contract modifications that occur prior to the start of the manufacturing process will supersede the original contract and revenue is recognized using the modified contract value. Contract modifications that occur during the manufacturing process (changes in scope of work, job performance, material costs, and/or final contract settlements) are recognized in the period in which the revisions are known. Provisions are made for estimated losses on uncompleted contracts in the contract liabilities account in the period in which such losses are determined.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The transaction price&#160;associated with the Company's contracts with customers are generally determined based on the fixed amount of consideration&#160;as specified&#160;in a&#160;contract. This&#160;&lt;em style="font: inherit;"&gt; may &lt;/em&gt;also include variable consideration in certain instances where&#160;it is considered probable that a significant reversal of cumulative revenue recognized will &lt;em style="font: inherit;"&gt;not&lt;/em&gt; occur. As a result, the amount of consideration ultimately received from the customer can fluctuate due to the variability of future events&#160;stated in a&#160;contract. Therefore, the aggregate amount of the transaction price&#160;includes the&#160;fixed consideration contained in a&#160;contract that is generally &lt;em style="font: inherit;"&gt;not&lt;/em&gt; subject to change and excludes&#160;sales and value added taxes, or amounts collected on behalf of &lt;em style="font: inherit;"&gt;third&lt;/em&gt; parties, along with any variable consideration. The total transaction price&#160;is then allocated to the performance obligations which is&#160;eventually recognized as revenue based on the project type and the method that is used to measure the transfer&#160;of promised goods and services to&#160;customers.&#160;Additionally, transaction prices relating to cost-plus contracts are determined by applying the applicable profit margin to costs incurred on contracts, whereas transaction prices relating to fixed price contracts are determined on a lump-sum basis. Further, standard payment terms are generally&#160;net &lt;em style="font: inherit;"&gt;30&lt;/em&gt; to &lt;em style="font: inherit;"&gt;60&lt;/em&gt; days, which is customer specific.&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Contract assets and liabilities&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Contract assets represent revenue recognized in excess of amounts billed&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Contract liabilities represent billings in excess of costs&#160;for work in progress for which the Company has a valid contract and an enforceable right to payment for work completed. Both customer billings and the satisfaction (or partial satisfaction) of the performance obligation(s) occur throughout the manufacturing process and impact&#160;the period end balances in these accounts.&#160;In addition, contract assets include receivables or amounts that are billable beyond the passage of time.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The following table shows the reconciliation of&#160;costs in excess of billings and billings in excess of costs:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Costs incurred on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;17,686&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;21,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Estimated earnings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Earned revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;29,796&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;33,182&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Less billings to date&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;27,415&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,580&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Costs in excess of billings, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,602&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Balance sheet classification&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,085&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,097&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(704&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(495&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Costs in excess of billings, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,602&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; background-color: rgb(255, 255, 255);"&gt;The Company anticipates that substantially all costs incurred on&#160;uncompleted contracts&#160;as of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;will be billed and collected within &lt;span style="-sec-ix-hidden:c116841079"&gt;one&lt;/span&gt; year&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255);"&gt;&lt;span style="font-family: Times New Roman;"&gt;.&#160;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;Unbilled accounts receivable&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;The Company has recorded&lt;span style="background-color:#ffffff;"&gt; $&lt;/span&gt;17.9&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;and $16.6&#160;million&#160;&lt;/span&gt;of unbilled accounts receivable&#160;on the consolidated balance sheet&lt;span style="color:#000000;"&gt;s &lt;/span&gt;&lt;/span&gt;as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&#160;from&#160;revenues generated by certain of its subsidiaries. The Company has fulfilled all performance obligations and has recorded revenue under the respective contracts. The deliverables under these contracts have been accepted by the customer and billings will be made once the customer takes possession of or arranges shipping for the products. The Company anticipates that substantially all of the amounts included in unbilled accounts receivable as of&#160;&lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;will be billed within &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Practical expedients&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Costs to obtain a contract are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; considered to be incremental or material, and project duration generally does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; span more than &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year. Accordingly, the Company applies the practical expedient for these types of costs and as such, are expensed in the period incurred.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;As a result of the Company's contracts having a duration of less than &lt;em style="font: inherit;"&gt;one&lt;/em&gt; year, a practical expedient was applied regarding disclosure of the aggregate amount and future timing of performance obligations that are unsatisfied or partially satisfied as of the end of the reporting period.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;


  </us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734965">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Sales&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;% of Total&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Products&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2,795&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2,146&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;8&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;4,988&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Specialty Piping Systems and Coating&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Revenue recognized under input method&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;12,613&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;34&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;12,801&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;22,752&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;23,139&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Revenue recognized under output method&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22,105&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;20,194&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;43,034&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;36,671&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;37,513&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;35,141&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;71,834&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;64,798&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c116841113"
      unitRef="USD">2795000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="2"
      id="c116841114"
      unitRef="Pure">0.07</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c116841115"
      unitRef="USD">2146000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="2"
      id="c116841116"
      unitRef="Pure">0.07</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c116841117"
      unitRef="USD">6048000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="2"
      id="c116841118"
      unitRef="Pure">0.08</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="-3"
      id="c116841119"
      unitRef="USD">4988000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-ProductMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeMember"
      decimals="2"
      id="c116841120"
      unitRef="Pure">0.07</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="-3"
      id="c116841122"
      unitRef="USD">12613000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="2"
      id="c116841123"
      unitRef="Pure">0.34</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="-3"
      id="c116841124"
      unitRef="USD">12801000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="2"
      id="c116841125"
      unitRef="Pure">0.36</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="-3"
      id="c116841126"
      unitRef="USD">22752000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="2"
      id="c116841127"
      unitRef="Pure">0.32</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="-3"
      id="c116841128"
      unitRef="USD">23139000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingInputMethodMember"
      decimals="2"
      id="c116841129"
      unitRef="Pure">0.36</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="-3"
      id="c116841130"
      unitRef="USD">22105000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="2"
      id="c116841131"
      unitRef="Pure">0.59</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="-3"
      id="c116841132"
      unitRef="USD">20194000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="2"
      id="c116841133"
      unitRef="Pure">0.57</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="-3"
      id="c116841134"
      unitRef="USD">43034000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="1"
      id="c116841135"
      unitRef="Pure">0.60</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="-3"
      id="c116841136"
      unitRef="USD">36671000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31_ProductOrServiceAxis-SpecialtyPipingSystemsAndCoatingMember_TimingOfTransferOfGoodOrServiceAxis-TransferredAtPointInTimeUsingOutputMethodMember"
      decimals="2"
      id="c116841137"
      unitRef="Pure">0.57</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841138"
      unitRef="USD">37513000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-05-01_2024-07-31"
      decimals="0"
      id="c116841139"
      unitRef="Pure">1</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841140"
      unitRef="USD">35141000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-05-01_2023-07-31"
      decimals="0"
      id="c116841141"
      unitRef="Pure">1</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841142"
      unitRef="USD">71834000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2024-02-01_2024-07-31"
      decimals="0"
      id="c116841143"
      unitRef="Pure">1</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841144"
      unitRef="USD">64798000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2023-02-01_2023-07-31"
      decimals="0"
      id="c116841145"
      unitRef="Pure">1</ppih:PercentOfRevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734966">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Costs incurred on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;17,686&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;21,912&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Estimated earnings&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12,110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;11,270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Earned revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;29,796&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;33,182&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Less billings to date&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;27,415&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;30,580&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Costs in excess of billings, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,602&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Balance sheet classification&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Contract assets: Costs and estimated earnings in excess of billings on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,085&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,097&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Contract liabilities: Billings in excess of costs and estimated earnings on uncompleted contracts&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(704&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(495&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Costs in excess of billings, net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,381&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,602&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfAssumptionsForLongDurationContractsByProductAndGuaranteeTextBlock>
    <ppih:CostsIncurredOnUncompletedContracts
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841148"
      unitRef="USD">17686000</ppih:CostsIncurredOnUncompletedContracts>
    <ppih:CostsIncurredOnUncompletedContracts
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841149"
      unitRef="USD">21912000</ppih:CostsIncurredOnUncompletedContracts>
    <ppih:EstimatedEarnings
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116841150"
      unitRef="USD">12110000</ppih:EstimatedEarnings>
    <ppih:EstimatedEarnings
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116841151"
      unitRef="USD">11270000</ppih:EstimatedEarnings>
    <ppih:EarnedRevenue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841152"
      unitRef="USD">29796000</ppih:EarnedRevenue>
    <ppih:EarnedRevenue
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841153"
      unitRef="USD">33182000</ppih:EarnedRevenue>
    <ppih:BillingsToDate
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841154"
      unitRef="USD">27415000</ppih:BillingsToDate>
    <ppih:BillingsToDate
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116841155"
      unitRef="USD">30580000</ppih:BillingsToDate>
    <ppih:CostsInExcessOfBillingsNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841156"
      unitRef="USD">2381000</ppih:CostsInExcessOfBillingsNet>
    <ppih:CostsInExcessOfBillingsNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841157"
      unitRef="USD">2602000</ppih:CostsInExcessOfBillingsNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841159"
      unitRef="USD">3085000</us-gaap:ContractWithCustomerAssetNet>
    <us-gaap:ContractWithCustomerAssetNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841160"
      unitRef="USD">3097000</us-gaap:ContractWithCustomerAssetNet>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841161"
      unitRef="USD">704000</us-gaap:ContractWithCustomerLiability>
    <us-gaap:ContractWithCustomerLiability
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841162"
      unitRef="USD">495000</us-gaap:ContractWithCustomerLiability>
    <ppih:CostsInExcessOfBillingsNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841163"
      unitRef="USD">2381000</ppih:CostsInExcessOfBillingsNet>
    <ppih:CostsInExcessOfBillingsNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841164"
      unitRef="USD">2602000</ppih:CostsInExcessOfBillingsNet>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841080"
      unitRef="USD">17900000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i_2024-01-31"
      decimals="-5"
      id="c116841081"
      unitRef="USD">16600000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:InventoryDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734967">
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;5&lt;/em&gt; - &lt;/b&gt;&lt;b&gt;Inventories&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;Inventories are stated at the lower of cost or net realizable value. Cost is determined using the &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-in, &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-out method for all inventories.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;Inventories consisted of the following:&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,777&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,787&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Work in process&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;574&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;611&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Finished goods&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,275&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,022&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Subtotal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,626&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,420&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Less allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;803&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;879&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,541&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company conducts periodic reviews&#160;of its inventory and records&#160;allowances for slow moving and obsolete items to reflect their net realizable value, which is primarily attributable to finished goods.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734968">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Raw materials&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;14,777&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;13,787&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Work in process&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;574&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;611&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Finished goods&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,275&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,022&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Subtotal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,626&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;16,420&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Less allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;803&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;879&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Inventories&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;15,541&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterials
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841171"
      unitRef="USD">14777000</us-gaap:InventoryRawMaterials>
    <us-gaap:InventoryRawMaterials
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841172"
      unitRef="USD">13787000</us-gaap:InventoryRawMaterials>
    <us-gaap:InventoryWorkInProcess
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841173"
      unitRef="USD">574000</us-gaap:InventoryWorkInProcess>
    <us-gaap:InventoryWorkInProcess
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841174"
      unitRef="USD">611000</us-gaap:InventoryWorkInProcess>
    <us-gaap:InventoryFinishedGoods
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841175"
      unitRef="USD">1275000</us-gaap:InventoryFinishedGoods>
    <us-gaap:InventoryFinishedGoods
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841176"
      unitRef="USD">2022000</us-gaap:InventoryFinishedGoods>
    <us-gaap:InventoryGross
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841177"
      unitRef="USD">16626000</us-gaap:InventoryGross>
    <us-gaap:InventoryGross
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116841178"
      unitRef="USD">16420000</us-gaap:InventoryGross>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841179"
      unitRef="USD">803000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841180"
      unitRef="USD">879000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryNet
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841181"
      unitRef="USD">15823000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841182"
      unitRef="USD">15541000</us-gaap:InventoryNet>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734969">
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;6&lt;/em&gt;&#160;- Income taxes&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The determination of the consolidated provision for income taxes, deferred tax assets and liabilities and related valuation allowances requires management to make judgments and estimates. As a company with subsidiaries in foreign jurisdictions, the process of calculating income taxes involves estimating current tax obligations and exposures in each jurisdiction as well as making judgments regarding the future recoverability of deferred tax assets. The relative proportion of taxable income earned domestically versus internationally can fluctuate significantly from period to period. Changes in the estimated level of annual pre-tax income, tax laws and the results of tax audits can affect the overall effective income tax rate, which impacts the level of income tax expense and net income. Judgments and estimates related to the Company's projections and assumptions are inherently uncertain; therefore, actual results could differ materially from projections.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;The Company's worldwide effective tax rates ("ETR") for the&#160;&lt;/span&gt;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;were&#160;&lt;/span&gt;23%&lt;span style="background-color:#ffffff;"&gt;&#160;and &lt;/span&gt;45%&lt;span style="background-color:#ffffff;"&gt;, respectively. The Company's ETR was&#160;25% and&#160;97% for the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, respectively.&#160;&lt;/span&gt;The change in the ETR is due to the ability to recognize tax benefits on losses in the United States in the current year whereas the prior year had a full valuation allowance and changes in the mix of income and loss in various jurisdictions.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company expects that future distributions from foreign subsidiaries will &lt;em style="font: inherit;"&gt;not&lt;/em&gt; be subject to incremental U.S. federal tax as they will be excludible&#160;from U.S. taxable income&#160;either be remittances of previously taxed earnings&#160;and profits or eligible for a full dividends received deduction. Current and future earnings in the Company's subsidiaries in Canada and Egypt are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; permanently reinvested. The earnings from these subsidiaries are subject to tax in their local jurisdiction, and withholding taxes in these jurisdictions are considered.&#160;As such, the Company has accrued a liability of $0.7 million as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; related to these taxes.&lt;/p&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2024-05-01_2024-07-31"
      decimals="2"
      id="c116841186"
      unitRef="Pure">0.23</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2023-05-01_2023-07-31"
      decimals="2"
      id="c116841187"
      unitRef="Pure">0.45</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2024-02-01_2024-07-31"
      decimals="2"
      id="c116841188"
      unitRef="Pure">0.25</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2023-02-01_2023-07-31"
      decimals="2"
      id="c116841189"
      unitRef="Pure">0.97</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:UndistributedEarningsOfForeignSubsidiaries
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841194"
      unitRef="USD">700000</us-gaap:UndistributedEarningsOfForeignSubsidiaries>
    <us-gaap:AssetImpairmentChargesTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734970">
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;7&lt;/em&gt;&#160;- Impairment of long-lived assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company's assessment of long-lived assets, and other identifiable intangibles is based upon factors that market participants would use in accordance with the accounting guidance for the fair value measurement of assets.&#160;At&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company performed an&#160;assessment to determine whether there were any triggering events that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;have occurred which could indicate that the carrying value of the Company's long-lived assets are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; recoverable, and an impairment &lt;em style="font: inherit;"&gt; may &lt;/em&gt;exist. Based on this assessment, the Company did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; identify any triggering events that would indicate that the carrying amounts &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be recoverable with respect to long-lived assets at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&#160; The Company will continue testing for potential impairment at least annually or as otherwise required by applicable accounting standards.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Goodwill.&lt;/b&gt;&lt;/i&gt; The purchase price of an acquired company is allocated between intangible assets and the net tangible assets of the acquired business with the residual of the purchase price recorded as goodwill. All identifiable goodwill&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;&#160;is&#160;attributable to the purchase of the remaining 50% interest in Perma-Pipe Canada, Ltd., which occurred in &lt;em style="font: inherit;"&gt;2016.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The&#160;following table provides a reconciliation of changes in the carrying amount of goodwill:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Foreign exchange change effect&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(66&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,156&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;The Company performs an impairment assessment of goodwill annually&#160;as of &lt;em style="font: inherit;"&gt; January 31,&lt;/em&gt;&#160;or more frequently if triggering events occur, based on the estimated fair value of the related reporting unit or intangible asset. Fair value is defined as the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants. During the period ended&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company performed a periodic assessment to determine whether there were any triggering events that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;have occurred which could indicate that more likely than &lt;em style="font: inherit;"&gt;not&lt;/em&gt;&#160;that the fair value of the reporting unit did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; exceed its carrying value, resulting in an impairment. Based on this assessment, the Company did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; identify any triggering events that would indicate that the fair value is less than the carrying value of the reporting unit at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&#160;Accordingly, the Company did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; proceed with performing an impairment test as a result of this periodic assessment. The Company will continue testing for impairment at least annually&#160;as of &lt;em style="font: inherit;"&gt; January 31,&lt;/em&gt;&#160;or as otherwise required by applicable accounting standards.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:AssetImpairmentChargesTextBlock>
    <us-gaap:BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage
      contextRef="i_2016-12-31_BusinessAcquisitionAxis-PermaPipeCanadaLtdMember"
      decimals="1"
      id="c116841204"
      unitRef="Pure">0.50</us-gaap:BusinessCombinationStepAcquisitionEquityInterestInAcquireeIncludingSubsequentAcquisitionPercentage>
    <us-gaap:ScheduleOfGoodwillTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734971">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Foreign exchange change effect&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 49%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(66&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,156&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841214"
      unitRef="USD">2222000</us-gaap:Goodwill>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841215"
      unitRef="USD">-66000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841216"
      unitRef="USD">2156000</us-gaap:Goodwill>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734972">
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;8&lt;/em&gt;&#160;- Stock-based compensation&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Company has prior incentive plans under which previously granted awards remain outstanding, but under which &lt;em style="font: inherit;"&gt;no&lt;/em&gt; new awards &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be granted, including the Company's &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; Omnibus Stock Incentive Plan, which expired in &lt;em style="font: inherit;"&gt; May 2024. &lt;/em&gt;At&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company had reserved a total &lt;span style="background-color:#ffffff;"&gt;196,026&lt;/span&gt;&#160;shares for grants and issuances under these incentive plans, including&#160;issuances pursuant to unvested or unexercised prior awards.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Company's prior incentive plans provided for the grant of deferred shares, non-qualified stock options, incentive stock options, restricted shares, restricted stock units, and performance-based restricted stock units intended to qualify under section &lt;em style="font: inherit;"&gt;422&lt;/em&gt; of the Internal Revenue Code. The prior incentive plans authorized awards to officers, employees, consultants, and independent directors.&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Company's &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; Omnibus Stock Incentive Plan, dated &lt;em style="font: inherit;"&gt; May 28, 2024, &lt;/em&gt;was approved by the Company's stockholders in &lt;em style="font: inherit;"&gt; July 2024 (&lt;/em&gt;&lt;em style="font: inherit;"&gt;"2024&lt;/em&gt; Plan"). The &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; Plan will expire&#160;in &lt;em style="font: inherit;"&gt; July 2027. &lt;/em&gt;The &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; Plan authorizes awards to officers, employees, consultants, and independent directors.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;Grants were made in connection with the &lt;em style="font: inherit;"&gt;2024&lt;/em&gt; Plan and the prior incentive plans to employees, officers, and independent directors, as further described below.&#160;&#160;&#160;&lt;/p&gt;
   &lt;div style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &#160;
   &lt;/div&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Stock-based&#160;compensation expense&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company has granted stock-based compensation awards to eligible employees, officers&#160;or independent directors. The Company recognized the following&#160;stock-based compensation expense&#160;for the periods presented:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Restricted stock-based compensation expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;177&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;227&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;396&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;456&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Stock options&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;The Company did &lt;span style="-sec-ix-hidden:c116841227"&gt;&lt;span style="-sec-ix-hidden:c116841238"&gt;not&lt;/span&gt;&lt;/span&gt; grant any stock options during the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; or &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;. The following table&#160;summarizes&#160;the Company's stock option activity:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Exercise Price (Per share)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Remaining Contractual Term (In years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Aggregate Intrinsic Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at January 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;11.15&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;0.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6.85&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Expired or forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12.41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding and exercisable at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6.89&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&lt;span style="background-color:#ffffff;"&gt;There was no vesting, expiration or forfeiture of previously unvested stock options during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;. In addition&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;, there were no remaining unvested stock options outstanding, and therefore no unrecognized compensation expense related to unvested stock options.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&#160;&lt;/p&gt;


   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Restricted stock&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The following table summarizes the Company's restricted stock activity for the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Restricted Shares&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Price (Per share)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Aggregate Intrinsic Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at January 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9.33&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,078&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;108&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;8.81&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Vested and issued&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(73&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9.36&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Forfeited or retired for taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10.25&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;230&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9.05&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,083&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, there was $1.5&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt; of unrecognized compensation expense related to unvested restricted stock granted under the&#160;plans. These&#160;costs are&#160;expected to be recognized over a weighted average period of 2.1&lt;span style="background-color:#ffffff;"&gt;&#160;years&lt;/span&gt;.&lt;/p&gt;
  </us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance
      contextRef="i_2024-07-31"
      decimals="INF"
      id="c116841220"
      unitRef="Share">196026</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734973">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Restricted stock-based compensation expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;177&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;227&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;396&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;456&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2024-05-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841261"
      unitRef="USD">177000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-05-01_2023-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841262"
      unitRef="USD">227000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841263"
      unitRef="USD">396000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2023-02-01_2023-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841264"
      unitRef="USD">456000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734974">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Exercise Price (Per share)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Remaining Contractual Term (In years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Aggregate Intrinsic Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at January 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;22&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;11.15&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;0.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Exercised&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(1&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6.85&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Expired or forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(17&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;12.41&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;-&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 40%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding and exercisable at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;6.89&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841269"
      unitRef="Share">22000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
      contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c116841270"
      unitRef="USDPerShare">11.15</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2023-02-01_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c116841271">P0Y8M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i_2024-01-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841272"
      unitRef="USD">6000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841273"
      unitRef="Share">1000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c116841274"
      unitRef="USDPerShare">6.85</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841276"
      unitRef="USD">2000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841277"
      unitRef="Share">17000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c116841278"
      unitRef="USDPerShare">12.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber
      contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841281"
      unitRef="Share">4000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
    <us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1
      contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="INF"
      id="c116841282"
      unitRef="USDPerShare">6.89</us-gaap:SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      id="c116841283">P1Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-4"
      id="c116841284"
      unitRef="USD">10000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841230"
      unitRef="Share">0</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedNumberOfShares>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841232"
      unitRef="Share">0</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2024-07-31_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c116841233"
      unitRef="USD">0</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734975">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Restricted Shares&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average Price (Per share)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Aggregate Intrinsic Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 55%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at January 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;222&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9.33&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,078&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;108&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;8.81&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Vested and issued&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;(73&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9.36&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Forfeited or retired for taxes&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(27&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;10.25&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: right; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Outstanding at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;230&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;9.05&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;2,083&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber
      contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841288"
      unitRef="Share">222000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c116841289"
      unitRef="USDPerShare">9.33</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding
      contextRef="i_2024-01-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841290"
      unitRef="USD">2078000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841291"
      unitRef="Share">108000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c116841292"
      unitRef="USDPerShare">8.81</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841294"
      unitRef="Share">73000</ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriod>
    <ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c116841295"
      unitRef="USDPerShare">9.36</ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedAndIssuedInPeriodWeightedAverageGrantDateFairValue>
    <ppih:StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841297"
      unitRef="Share">27000</ppih:StockIssuedDuringPeriodSharesRestrictedStockAwardForfeitedOrRetiredForTaxes>
    <ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c116841298"
      unitRef="USDPerShare">10.25</ppih:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresOrRetirementsForTaxesWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber
      contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-4"
      id="c116841300"
      unitRef="Share">230000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNonOptionEquityInstrumentsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c116841301"
      unitRef="USDPerShare">9.05</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding
      contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-3"
      id="c116841302"
      unitRef="USD">2083000</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsAggregateIntrinsicValueOutstanding>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      decimals="-5"
      id="c116841236"
      unitRef="USD">1500000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2024-02-01_2024-07-31_AwardTypeAxis-RestrictedStockMember"
      id="c116841237">P2Y1M6D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:EarningsPerShareTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734976">
   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;9&lt;/em&gt;&#160;- Earnings per share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Basic weighted average common shares outstanding at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,954&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,029&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,017&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Dilutive effect of equity compensation plans&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Weighted average common shares outstanding assuming full dilution&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,125&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,139&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,987&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,017&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;114&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Stock options and restricted stock with exercise prices or grant date prices below the average market prices&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Net income (loss) attributable to common stock&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,289&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,022&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;4,732&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Earnings (loss) per share attributable to common stock&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(0.01&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(0.01&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


  </us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734977">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 52%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Basic weighted average common shares outstanding at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,954&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,029&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;7,930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;8,017&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Dilutive effect of equity compensation plans&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Weighted average common shares outstanding assuming full dilution&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,125&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,139&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,987&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;8,017&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Stock options and restricted stock not included in the computation of diluted earnings per share of common stock because the option exercise prices or grant date prices exceeded the average market prices of the common shares&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;79&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;114&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Stock options and restricted stock with exercise prices or grant date prices below the average market prices&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;171&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;57&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Net income (loss) attributable to common stock&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,289&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,022&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;4,732&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(100&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Earnings (loss) per share attributable to common stock&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(0.01&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.13&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;0.59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(0.01&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841313"
      unitRef="Share">7954000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841314"
      unitRef="Share">8029000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-4"
      id="c116841315"
      unitRef="Share">7930000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841316"
      unitRef="Share">8017000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841317"
      unitRef="Share">171000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116841318"
      unitRef="Share">110000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841319"
      unitRef="Share">57000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841320"
      unitRef="Share">0</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841321"
      unitRef="Share">8125000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841322"
      unitRef="Share">8139000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841323"
      unitRef="Share">7987000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841324"
      unitRef="Share">8017000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841325"
      unitRef="Share">0</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841326"
      unitRef="Share">79000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841327"
      unitRef="Share">114000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841328"
      unitRef="Share">18000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841329"
      unitRef="Share">171000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116841330"
      unitRef="Share">110000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841331"
      unitRef="Share">57000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116841332"
      unitRef="Share">170000</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841333"
      unitRef="USD">3289000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841334"
      unitRef="USD">1022000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841335"
      unitRef="USD">4732000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-5"
      id="c116841336"
      unitRef="USD">-100000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2024-05-01_2024-07-31"
      decimals="INF"
      id="c116841338"
      unitRef="USDPerShare">0.41</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-05-01_2023-07-31"
      decimals="INF"
      id="c116841339"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2024-02-01_2024-07-31"
      decimals="INF"
      id="c116841340"
      unitRef="USDPerShare">0.6</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2023-02-01_2023-07-31"
      decimals="INF"
      id="c116841341"
      unitRef="USDPerShare">-0.01</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2024-05-01_2024-07-31"
      decimals="INF"
      id="c116841342"
      unitRef="USDPerShare">0.4</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-05-01_2023-07-31"
      decimals="INF"
      id="c116841343"
      unitRef="USDPerShare">0.13</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2024-02-01_2024-07-31"
      decimals="INF"
      id="c116841344"
      unitRef="USDPerShare">0.59</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2023-02-01_2023-07-31"
      decimals="INF"
      id="c116841345"
      unitRef="USDPerShare">-0.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:DebtDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734978">
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;10&lt;/em&gt;&#160;- Debt&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Debt totaled $27.9 million and $25.7 million at &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Revolving lines -&#160;North America&lt;/b&gt;&lt;/i&gt;&lt;b&gt;.&#160;&lt;/b&gt;On &lt;em style="font: inherit;"&gt; September 20, 2018, &lt;/em&gt;the Company and certain of its U.S. and Canadian subsidiaries (collectively, together with the Company, the &#x201c;North American Loan Parties&#x201d;) entered into a Revolving Credit and Security Agreement (the &#x201c;Credit Agreement&#x201d;) with PNC Bank, National Association ("PNC"), as administrative agent and lender, providing for a &lt;span style="-sec-ix-hidden:c116841349"&gt;three&lt;/span&gt;-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#x201c;Senior Credit Facility&#x201d;).&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;On &lt;em style="font: inherit;"&gt; September 17, 2021,&#160;&lt;/em&gt;the North American Loan Parties&#160;executed an extension of the Credit Agreement&#160;with PNC, providing for a new &lt;span style="-sec-ix-hidden:c116841351"&gt;five&lt;/span&gt;-year $18&#160;million senior secured revolving credit facility, subject to a borrowing base including various reserves (the &#x201c;Renewed Senior Credit Facility&#x201d;). The Company's&#160;obligations under the Renewed Senior Credit Facility are currently guaranteed by Perma-Pipe Canada, Inc. Each of the North American Loan Parties other than Perma-Pipe Canada, Inc. (collectively, the "Borrowers") is a borrower under the Renewed Senior Credit Facility.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Borrowers have used and will continue to use borrowings under the Renewed Senior Credit Facility (i)&#160;to fund future capital expenditures; (ii)&#160;to fund ongoing working capital needs; and (iii)&#160;for other corporate purposes, including potentially additional stock&#160;repurchases. Borrowings under the Renewed Senior Credit Facility bear&#160;interest at a rate equal to an alternate base rate, SOFR&#160;rate index, plus, in each case, an applicable margin. The applicable margin is based on a fixed charge coverage ratio ("FCCR") range. Interest on alternate base rate borrowings is the alternate base rate (as defined&#160;in the Renewed Senior Credit Facility) plus an applicable margin ranging from 1.00% to 1.50%, based on the FCCR in the most recently reported period. Interest on SOFR rate borrowings is the SOFR&#160;rate (as defined in the Renewed Senior Credit Facility) plus an applicable margin ranging from 2.00% to 2.50%, based on the FCCR in the most recently reported period, as well as an additional SOFR adjustment ranging from 0.10% to 0.25%, based on the term of the interest period. Additionally, the Borrowers pay a 0.25% per annum facility fee on the unused portion of the Renewed Senior Credit Facility.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;Subject to certain exceptions, borrowings under the Renewed Senior Credit Facility are secured by substantially all of the North American Loan Parties&#x2019; assets. The Renewed Senior Credit Facility matures on &lt;em style="font: inherit;"&gt; September 20, 2026. &lt;/em&gt;Subject to certain qualifications and exceptions, the Renewed Senior Credit Facility contains covenants that, among other things, restrict the North American Loan Parties&#x2019; ability to create liens, merge or consolidate, consummate acquisitions, make investments, dispose of assets, incur debt, and pay dividends and other distributions. In addition, the North American Loan Parties &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; make&#160;capital expenditures in excess of $5.0 million annually, plus a limited carryover of unused amounts. Further, the North American Loan Parties &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; make repurchases of the Company's common stock in excess of $3.0 million.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Renewed Senior Credit Facility also contains financial covenants requiring&#160;the North American Loan Parties to achieve a ratio of its EBITDA (as defined in the Renewed Senior Credit Facility) to the sum of scheduled cash principal payments on indebtedness for borrowed money and interest payments on the advances under the Renewed Senior Credit Facility&#160;to be &lt;em style="font: inherit;"&gt;not&lt;/em&gt; less than 1.10 to &lt;em style="font: inherit;"&gt;1.00&lt;/em&gt; for any &lt;em style="font: inherit;"&gt;five&lt;/em&gt; consecutive days in which the undrawn availability is less than $3.0 million&#160;or any day in which the undrawn availability is less than $2.0 million. In order to cure any future breach of these covenants by the North American Loan Parties, the Company &lt;em style="font: inherit;"&gt; may &lt;/em&gt;repatriate cash from any of its foreign subsidiaries that are otherwise &lt;em style="font: inherit;"&gt;not&lt;/em&gt; a party to the Renewed Senior Credit Facility in an amount which, when added to the amount of the Company&#x2019;s Consolidated EBITDA, would result in compliance on a pro forma basis. The Company was in compliance with respect to these covenants as of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt; text-align: justify;"&gt;The Renewed Senior Credit Facility contains customary events of default. If an event of default occurs and is continuing, then PNC &lt;em style="font: inherit;"&gt; may &lt;/em&gt;terminate all commitments to extend further credit and declare all amounts outstanding under the Renewed Senior Credit Facility due and payable immediately. In addition, if any of the North American Loan Parties or certain of their subsidiaries become the subject of voluntary or involuntary proceedings under any bankruptcy, insolvency or similar law, then any outstanding obligations under the Renewed Senior Credit Facility will automatically become immediately due and payable. Loans outstanding under the Renewed Senior Credit Facility will bear interest at a rate of 2.00% per annum in excess of the otherwise applicable rate (i) while a bankruptcy event of default exists or (ii) upon the lender's&#160;request, during the continuance of any other event of default.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;,&#160;the Company had borrowed an aggregate of &lt;span style="background-color:#ffffff"&gt;$6.7&lt;/span&gt;&lt;span style="background-color:#ffffff"&gt;&#160;million at a rate of 10.0%&lt;/span&gt;&lt;span style="background-color:#ffffff"&gt;&#160;and had $4.7&lt;/span&gt;&lt;span style="background-color:#ffffff"&gt;&#160;million available under the Renewed Senior Credit Facility. As of &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, the Company had borrowed an aggregate of $5.5&#160;million and had $4.0&#160;million available under the Renewed Senior Credit Facility. &#160;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="background-color:#ffffff;"&gt;Finance obligation&#160;- buildings and land. &lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;span style="background-color:#ffffff;"&gt;On &lt;em style="font: inherit;"&gt; April 14, 2021, &lt;/em&gt;the Company entered into a purchase and sale agreement (the "Purchase and Sale Agreement"). Pursuant to the terms of the Purchase and Sale Agreement, the Company sold its land and buildings in Lebanon, Tennessee (the "Property") for $10.4 million. The transaction generated net cash proceeds of $9.1&#160;million. Concurrently with the sale, the Company paid off the approximately $0.9 million&#160;mortgage note on the Property to its lender.&#160; The&#160;Company used the remaining proceeds to repay its borrowings under the Senior Credit Facility, for&#160;strategic investments, and for general corporate needs. Concurrent with the sale of the Property, the Company entered into a&#160;&lt;span style="-sec-ix-hidden:c116841381"&gt;fifteen&lt;/span&gt;-year lease agreement (the &#x201c;Lease Agreement&#x201d;), whereby the Company leases back the Property at an annual rental rate of&#160;approximately $0.8 million, subject to annual rent increases of&#160;2.0%. Under the Lease Agreement, the Company has&#160;&lt;span style="-sec-ix-hidden:c116841384"&gt;four&lt;/span&gt; consecutive options to extend the term of the lease by&#160;&lt;span style="-sec-ix-hidden:c116841385"&gt;five&lt;/span&gt; years for each such option. &#160;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&lt;span style="background-color:#ffffff;"&gt;In accordance with ASC&#160;&lt;em style="font: inherit;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;, this transaction was recorded as a failed sale and leaseback as the present value of lease payments exceeded&#160;substantially the&#160;fair value of the underlying assets. The Company utilized an incremental borrowing rate of 8.0% to determine&#160;the finance obligation&#160;to record for the amounts received&#160;and will continue to depreciate the assets.&#160;The current portion of the finance obligation of $0.2&#160;million is recognized in current maturities of long-term debt and the long-term portion of $8.9&#160;million is recognized&#160;in&#160;long-term finance obligation&#160;on the Company's consolidated balance sheets as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;.&#160;The net carrying amount of the financial liability and remaining assets will be &lt;em style="font: inherit;"&gt;zero&lt;/em&gt; at the end of the lease term.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt 7.2pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;&lt;span style="background-color:#ffffff;"&gt;Revolving lines -&#160;foreign&lt;/span&gt;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="background-color:#ffffff;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="background-color:#ffffff;"&gt; The Company also has credit arrangements used by its Middle Eastern subsidiaries in the U.A.E.&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;,&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt; Egypt &lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;and Saudi Arabia &lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;as discussed further below.&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;United Arab Emirates&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company has&#160;a revolving line for 8.0&#160;million U.A.E. Dirhams (approximately $2.2&#160;million at &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;) from a bank in the U.A.E. As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;the&#160;facility has&#160;an interest rate of approximately&#160;8.6%, and&#160;expired in &lt;em style="font: inherit;"&gt; July&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;2024,&lt;/em&gt; however, the Company has started&#160;the process to renew&#160;and extend&#160;this credit arrangement and the credit facility has continued without interruption and penalty.&#160;The Company had borrowed an aggregate of &lt;span style="background-color:#ffffff;"&gt;$1.2&lt;/span&gt;&#160;million&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and $0.2 million&#160;as of &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively, and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, the Company had unused borrowing availability of approximately $1.0 million and $1.9 million, respectively.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;The Company has a revolving line for 20.5&#160;million U.A.E. Dirhams (approximately $5.6&#160;million&#160;at &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;) from a bank in the U.A.E. As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;the&#160;facility has an interest rate of approximately&#160;8.7%. The facility expired in &lt;em style="font: inherit;"&gt; August 2024, &lt;/em&gt;however, the Company has started the process to renew and extend this credit arrangement and the credit facility has continued without interruption or penalty.&#160;The Company had borrowed an aggregate o&lt;span style="background-color:#ffffff;"&gt;f $1.0&#160;&lt;/span&gt;million&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and $0.1 million&#160;as of &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. As of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, the Company had unused borrowing availability of approximately &lt;span style="background-color:#ffffff;"&gt;$1.2&#160;&lt;/span&gt;million and&lt;span style="background-color:#ffffff;"&gt; $1.0 &lt;/span&gt;million, respectively.&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;Egypt&lt;/i&gt;&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;div&gt;
    &lt;div style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
     &lt;div style="font-size:10pt"&gt;
      &lt;div style="font-family:Times New Roman"&gt;
        In
       &lt;em style="font: inherit;"&gt; June 2021, &lt;/em&gt;and as renewed or amended subsequently thereafter, the Company's Egyptian subsidiary entered into a credit arrangement with a bank in Egypt for a revolving line of
       100.0&#160;million Egyptian Pounds (approximately
       &lt;span style="background-color:#ffffff"&gt;$2.1&lt;/span&gt;
       &lt;span style="background-color:#ffffff"&gt;&#160;million&lt;/span&gt; at
       &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by certain assets (such as accounts receivable) of the Company's Egyptian subsidiary. Among other covenants, the credit arrangement established a maximum leverage ratio allowable and restricted the Company's Egyptian subsidiary's ability to undertake any additional debt.&#160;As of
       &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the&#160;facility has an interest rate of approximately
       &lt;span style="background-color:#ffffff"&gt;&#160;20.8%&lt;/span&gt;
       &lt;span style="background-color:#ffffff;"&gt;and&#160;expires&#160;in &lt;em style="font: inherit;"&gt; November 2024.&#160;&lt;/em&gt;As of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company had substantially nothing outstanding with respect to this credit arrangement, and approximately $1.4 million outstanding at&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, which is presented as a component of current&#160;&lt;/span&gt;maturities of long-term debt in the Company's consolidated balance sheets. Further, as of&#160;
       &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;and&#160;
       &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, the Company had unused borrowing capacity
       &lt;span style="background-color:#ffffff;"&gt;of $2.1 million&#160;and $3.2 m&lt;/span&gt;illion,&#160;respectively.&#160;
      &lt;/div&gt;
     &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;
      &#160;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;div&gt;
    &lt;div style="font-size:10pt"&gt;
     &lt;div style="font-family:Times New Roman"&gt;
       In
      &lt;em style="font: inherit;"&gt; December 2021, &lt;/em&gt;the Company entered into a credit arrangement for project financing with a bank in Egypt for
      28.2&#160;million Egyptian Pounds. As this project has progressed and the Company has made collections, the facility has decreased to a current amount of&#160;
      2.1&#160;million Egyptian Pounds&#160;(approximatel
      &lt;span style="background-color:#ffffff;"&gt;y $0.1&#160;mi&lt;/span&gt;llion at
      &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;). This credit arrangement is in the form of project financing at rates competitive in Egypt. The line is secured by the contract for a project being financed by the Company's Egyptian subsidiary.
      &lt;span style="background-color:#ffffff"&gt;The facility has an interest rate of approximately&#160;11.0%&lt;/span&gt;
      &lt;span style="background-color:#ffffff"&gt;&#160;and, as of&lt;/span&gt;&#160;
      &lt;em style="font: inherit;"&gt; November 2022, &lt;/em&gt;is
      no longer available for borrowings by the Company. The facility will expire in connection with final customer balance collections and the completion of the project. The Company had approximately
      &lt;span style="background-color:#ffffff;"&gt; $0.1&#160;&lt;/span&gt;million outstanding&#160;
      as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets.
     &lt;/div&gt;
    &lt;/div&gt;
   &lt;/div&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;i&gt;Saudi Arabia&lt;/i&gt;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt; text-align: justify;"&gt;In &lt;em style="font: inherit;"&gt; March 2022, &lt;/em&gt;the Company's Saudi Arabian subsidiary entered into a credit arrangement with a bank in Saudi Arabia for a revolving line of&#160;37.0&#160;million Saudi Riyals (approximately $9.9&#160;million at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;). This credit arrangement is in the form of project financing at rates competitive in Saudi Arabia. The line is secured by certain assets (such as accounts receivable) of the Company's Saudi Arabian subsidiary. The&#160;facility was renewed in &lt;em style="font: inherit;"&gt; May 2024 &lt;/em&gt;with substantially the same terms and conditions and expires in &lt;em style="font: inherit;"&gt; May 2025. &lt;/em&gt;As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the facility has an interest rate of approximately&#160;9.7%.&#160;The Company had borrowed an aggregate o&lt;span style="background-color:#ffffff;"&gt;f $2.6&#160;million&#160;and $3.2&#160;million&#160;&lt;/span&gt;as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively,&#160;and&#160;is&#160;presented as a component of current maturities of long-term debt in the Company's consolidated balance sheets. The unused borrowing availability attributable to this credit arrangement at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;and&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, was &lt;span style="background-color:#ffffff;"&gt;$6.3&#160;million and $6.1 &lt;/span&gt;million, respectively.&#160;&lt;/p&gt;
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: justify;"&gt;These credit arrangements are in the form of overdraft facilities and project financing at rates competitive in the countries in which the Company operates. The lines are secured by certain equipment, certain assets (such as accounts receivable and inventory), and a guarantee by the Company. Some credit arrangement covenants require a minimum tangible net worth to be maintained, including maintaining certain levels of intercompany subordinated debt. In addition, some of the revolving credit facilities restrict payment of dividends or undertaking of additional debt. The Company guarantees only a portion of the subsidiaries' debt, including foreign debt. The amount of foreign subsidiary debt guaranteed by the Company was approxim&lt;span style="background-color:#ffffff;"&gt;ately $1.1&#160;million and $0.1 million at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively.&#160;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company was in compliance with the covenants under the credit arrangements in the U.A.E., Egypt and Saudi Arabia as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, &lt;span style="background-color:#ffffff;"&gt;with the exception of those arrangements that have expired or are set to expire and have &lt;em style="font: inherit;"&gt;not&lt;/em&gt; yet been renewed.&#160;Although certain of the arrangements have expired and the borrowings could be required to be repaid immediately by the banks, the Company is in regular communication with&#160;the respective banks throughout the renewal process and all of the&#160;arrangements have continued without interruption or penalty. &lt;/span&gt;On &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, interest rates were based on (i) the Emirates Inter Bank Offered Rate&#160;plus 3.0% to 3.5% per annum for the U.A.E. credit arrangements, &lt;em style="font: inherit;"&gt;two&lt;/em&gt;&#160;of which have&#160;a minimum interest rate of 4.5% per annum; (ii)&#160;either the Central Bank of Egypt corporate loan rate plus 1.5% to 3.5% per annum or the stated interest rate in the agreements for the Egypt credit arrangements;&#160;and (iii) the Saudi Inter-Bank Offered Rate plus 3.5% for the Saudi Arabia credit arrangement. Based on these base rates, as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company's interest rates ranged from&#160;8.6% to 20.8%, with a weighted average rate of 11.5%, and the Company had facility limits totaling &lt;span style="background-color:#ffffff;"&gt;$24.7&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt; under these credit arrangements. &lt;span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;"&gt;As of &lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;,&#160;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;$7.1&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; o&lt;/span&gt;&lt;span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;"&gt;f availability was used to support letters of credit to guarantee amounts committed for inventory purchases and for performance guarantees. Additionally, as of &lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;span style="background-color: rgb(255, 255, 255); font-family: Times New Roman; font-size: 10pt;"&gt;, the Company had borrow&lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;ed &lt;/span&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;$7.8&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt;&#160;and had an additional &lt;span style="background-color:#ffffff;"&gt;$12.6&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;million&lt;/span&gt; of &lt;/span&gt;borrowing remaining available under the foreign revolving credit arrangements. The foreign revolving lines balances were included as a component of current maturities of long-term debt in the Company's consolidated balance sheets&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;.&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;In &lt;em style="font: inherit;"&gt; June 2023, &lt;/em&gt;the Company&#160;assumed a promissory note of approximately $2.8&#160;million in connection with the formation of the joint venture with Gulf Insulation Group&lt;span style="background-color:#ffffff;"&gt; (see Note &lt;em style="font: inherit;"&gt;16&lt;/em&gt;). I&lt;/span&gt;n&#160;accordance with the promissory note, all principal is due and payable on the maturity date of &lt;em style="font: inherit;"&gt; April 9, 2026, &lt;/em&gt;with the option to prepay, in whole or in part, at any time prior to the maturity date, without premium or penalty.&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0px; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Mortgages. &lt;/b&gt;&lt;/i&gt;On &lt;em style="font: inherit;"&gt; July&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;28,&lt;/em&gt; &lt;em style="font: inherit;"&gt;2016,&lt;/em&gt; the Company entered into a mortgage agreement&#160;secured by the Company's manufacturing facility located in Alberta, Canada&#160;that matures on &lt;em style="font: inherit;"&gt; December&#160;&lt;/em&gt;&lt;span style="-sec-ix-hidden:c116841456"&gt;23,&lt;/span&gt; &lt;em style="font: inherit;"&gt;2042.&lt;/em&gt; As of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the remaining balance on the mortgage in Canada is approximately CAD 5.9&#160;million (approximately $4.3&#160;million at &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;).&#160;The interest rate is variable,&#160;and&#160;was 8.8%&lt;span style="background-color:#ffffff;"&gt;&#160;&lt;/span&gt;at &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;. The principal balance is included as a component of long-term debt, less current maturities in the Company's consolidated balance sheets and is presented net of issuance costs of $0.1&#160;million&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024 &lt;/em&gt;and &lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively.&lt;/p&gt;
  </us-gaap:DebtDisclosureTextBlock>
    <us-gaap:DebtAndCapitalLeaseObligations
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841347"
      unitRef="USD">27900000</us-gaap:DebtAndCapitalLeaseObligations>
    <us-gaap:DebtAndCapitalLeaseObligations
      contextRef="i_2024-01-31"
      decimals="-5"
      id="c116841348"
      unitRef="USD">25700000</us-gaap:DebtAndCapitalLeaseObligations>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2018-09-20_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-6"
      id="c116841350"
      unitRef="USD">18000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-6"
      id="c116841352"
      unitRef="USD">18000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-BaseRateMember"
      decimals="2"
      id="c116841353"
      unitRef="Pure">0.01</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-BaseRateMember"
      decimals="3"
      id="c116841354"
      unitRef="Pure">0.015</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="2"
      id="c116841355"
      unitRef="Pure">0.02</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="3"
      id="c116841356"
      unitRef="Pure">0.025</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MinimumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="3"
      id="c116841357"
      unitRef="Pure">0.001</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_RangeAxis-MaximumMember_StatementScenarioAxis-AdditionalSOFRAdjustmentBasedOnTermOfInterestPeriodMember_VariableRateAxis-SecuredOvernightFinancingRateSOFRMember"
      decimals="4"
      id="c116841358"
      unitRef="Pure">0.0025</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="4"
      id="c116841359"
      unitRef="Pure">0.0025</us-gaap:LineOfCreditFacilityUnusedCapacityCommitmentFeePercentage>
    <ppih:LineOfCreditFacilityCapitalExpendituresRestrictions
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="-6"
      id="c116841361"
      unitRef="USD">5000000</ppih:LineOfCreditFacilityCapitalExpendituresRestrictions>
    <ppih:LineOfCreditFacilityCommonStockRepurchaseRestrictions
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="-6"
      id="c116841363"
      unitRef="USD">3000000</ppih:LineOfCreditFacilityCommonStockRepurchaseRestrictions>
    <ppih:LineOfCreditFacilityFixedChargeCoverageRatioRequired
      contextRef="d_2021-09-17_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="INF"
      id="c116841365"
      unitRef="Pure">1.1</ppih:LineOfCreditFacilityFixedChargeCoverageRatioRequired>
    <ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="-6"
      id="c116841368"
      unitRef="USD">3000000</ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailabilityForFiveConsecutiveDays>
    <ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="-6"
      id="c116841369"
      unitRef="USD">2000000</ppih:LineOfCreditFacilityCovenantTermsEBITDARatioMinimumUndrawnAvailability>
    <ppih:LineOfCreditFacilityDefaultAdditionalInterestRate
      contextRef="i_2021-09-17_CreditFacilityAxis-RevolvingLinesNorthAmericaMember_LegalEntityAxis-NorthAmericanLoanPartiesMember"
      decimals="2"
      id="c116841371"
      unitRef="Pure">0.02</ppih:LineOfCreditFacilityDefaultAdditionalInterestRate>
    <us-gaap:LinesOfCreditCurrent
      contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-5"
      id="c116841372"
      unitRef="USD">6700000</us-gaap:LinesOfCreditCurrent>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="1"
      id="c116841373"
      unitRef="Pure">0.10</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-5"
      id="c116841374"
      unitRef="USD">4700000</us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity>
    <us-gaap:LinesOfCreditCurrent
      contextRef="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-5"
      id="c116841375"
      unitRef="USD">5500000</us-gaap:LinesOfCreditCurrent>
    <us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity
      contextRef="i_2024-01-31_CreditFacilityAxis-RevolvingLinesNorthAmericaMember"
      decimals="-6"
      id="c116841376"
      unitRef="USD">4000000</us-gaap:LineOfCreditFacilityCurrentBorrowingCapacity>
    <us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration
      contextRef="i_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-5"
      id="c116841378"
      unitRef="USD">10400000</us-gaap:DisposalGroupIncludingDiscontinuedOperationConsideration>
    <us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment
      contextRef="d_2021-04-14_2021-04-14_IncomeStatementBalanceSheetAndAdditionalDisclosuresByDisposalGroupsIncludingDiscontinuedOperationsAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-5"
      id="c116841379"
      unitRef="USD">9100000</us-gaap:ProceedsFromSaleOfPropertyPlantAndEquipment>
    <us-gaap:RepaymentsOfSecuredDebt
      contextRef="d_2021-04-14_2021-04-14_DebtInstrumentAxis-MortgageNoteSecuredByTennesseeManufacturingFacilityMember"
      decimals="-5"
      id="c116841380"
      unitRef="USD">900000</us-gaap:RepaymentsOfSecuredDebt>
    <ppih:SaleLeasebackTransactionAnnualRentalPaymentsAmount
      contextRef="d_2021-04-14_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-5"
      id="c116841382"
      unitRef="USD">800000</ppih:SaleLeasebackTransactionAnnualRentalPaymentsAmount>
    <ppih:LesseeFinanceLeaseAnnualRentIncreasePercentage
      contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="2"
      id="c116841383"
      unitRef="Pure">0.02</ppih:LesseeFinanceLeaseAnnualRentIncreasePercentage>
    <us-gaap:LesseeFinanceLeaseDiscountRate
      contextRef="i_2021-04-14_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="2"
      id="c116841387"
      unitRef="Pure">0.08</us-gaap:LesseeFinanceLeaseDiscountRate>
    <us-gaap:LongTermDebtAndCapitalLeaseObligationsCurrent
      contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-5"
      id="c116841388"
      unitRef="USD">200000</us-gaap:LongTermDebtAndCapitalLeaseObligationsCurrent>
    <ppih:LongtermDebtAndLeaseObligationNoncurrent
      contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-LandAndBuildingsInLebanonTennesseeMember"
      decimals="-5"
      id="c116841389"
      unitRef="USD">8900000</ppih:LongtermDebtAndLeaseObligationNoncurrent>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-6"
      id="c116841391"
      unitRef="AED">8000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-5"
      id="c116841392"
      unitRef="USD">2200000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="3"
      id="c116841393"
      unitRef="Pure">0.086</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-5"
      id="c116841395"
      unitRef="USD">1200000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-5"
      id="c116841398"
      unitRef="USD">200000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-6"
      id="c116841401"
      unitRef="USD">1000000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries1Member"
      decimals="-5"
      id="c116841402"
      unitRef="USD">1900000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-5"
      id="c116841403"
      unitRef="AED">20500000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-5"
      id="c116841404"
      unitRef="USD">5600000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="3"
      id="c116841405"
      unitRef="Pure">0.087</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-6"
      id="c116841406"
      unitRef="USD">1000000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-5"
      id="c116841408"
      unitRef="USD">100000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-5"
      id="c116841412"
      unitRef="USD">1200000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByMiddleEasternSubsidiaries2Member"
      decimals="-6"
      id="c116841413"
      unitRef="USD">1000000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2021-06-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="-8"
      id="c116841414"
      unitRef="EGP">100000000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="-5"
      id="c116841415"
      unitRef="USD">2100000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2023-08-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="3"
      id="c116841416"
      unitRef="Pure">0.208</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="-5"
      id="c116841417"
      unitRef="USD">1400000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="-5"
      id="c116841418"
      unitRef="USD">2100000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiariesMember"
      decimals="-5"
      id="c116841419"
      unitRef="USD">3200000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2021-12-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-5"
      id="c116841420"
      unitRef="EGP">28200000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-5"
      id="c116841421"
      unitRef="EGP">2100000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-5"
      id="c116841422"
      unitRef="USD">100000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="2"
      id="c116841423"
      unitRef="Pure">0.11</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2022-11-30_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-3"
      id="c116841424"
      unitRef="USD">0</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedByEgyptSubsidiaries2Member"
      decimals="-5"
      id="c116841425"
      unitRef="USD">100000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2022-03-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-6"
      id="c116841427"
      unitRef="USD">37000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-5"
      id="c116841428"
      unitRef="USD">9900000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="3"
      id="c116841429"
      unitRef="Pure">0.097</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-5"
      id="c116841430"
      unitRef="USD">2600000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-5"
      id="c116841431"
      unitRef="USD">3200000</ppih:LongtermDebtCurrentMaturitiesExcludingNorthAmericanRevolvingLine>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-5"
      id="c116841432"
      unitRef="USD">6300000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember_DebtInstrumentAxis-RenewalOfRevolvingCreditLinesUsedBySaudiArabianSubsidiaryMember"
      decimals="-5"
      id="c116841433"
      unitRef="USD">6100000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <ppih:LineOfCreditFacilityGuaranteedAmount
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841435"
      unitRef="USD">1100000</ppih:LineOfCreditFacilityGuaranteedAmount>
    <ppih:LineOfCreditFacilityGuaranteedAmount
      contextRef="i_2024-01-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841436"
      unitRef="USD">100000</ppih:LineOfCreditFacilityGuaranteedAmount>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-EIBORMember"
      decimals="2"
      id="c116841438"
      unitRef="Pure">0.03</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-EIBORMember"
      decimals="3"
      id="c116841439"
      unitRef="Pure">0.035</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentInterestRateStatedPercentage
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c116841441"
      unitRef="Pure">0.045</us-gaap:DebtInstrumentInterestRateStatedPercentage>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember"
      decimals="3"
      id="c116841442"
      unitRef="Pure">0.015</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember_VariableRateAxis-CentralBankOfEqyptCbeRateMember"
      decimals="3"
      id="c116841443"
      unitRef="Pure">0.035</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:DebtInstrumentBasisSpreadOnVariableRate1
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_VariableRateAxis-SIBORMember"
      decimals="3"
      id="c116841444"
      unitRef="Pure">0.035</us-gaap:DebtInstrumentBasisSpreadOnVariableRate1>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c116841445"
      unitRef="Pure">0.086</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-MaximumMember"
      decimals="3"
      id="c116841446"
      unitRef="Pure">0.208</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember_RangeAxis-WeightedAverageMember"
      decimals="3"
      id="c116841447"
      unitRef="Pure">0.115</us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd>
    <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841448"
      unitRef="USD">24700000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
    <us-gaap:LettersOfCreditOutstandingAmount
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841449"
      unitRef="USD">7100000</us-gaap:LettersOfCreditOutstandingAmount>
    <us-gaap:ProceedsFromIssuanceOfDebt
      contextRef="d_2024-02-01_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841450"
      unitRef="USD">7800000</us-gaap:ProceedsFromIssuanceOfDebt>
    <us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity
      contextRef="i_2024-07-31_CreditFacilityAxis-ForeignRevolvingLinesMember"
      decimals="-5"
      id="c116841451"
      unitRef="USD">12600000</us-gaap:LineOfCreditFacilityRemainingBorrowingCapacity>
    <us-gaap:DebtInstrumentFaceAmount
      contextRef="i_2023-06-30_DebtInstrumentAxis-PromissoryNoteMember"
      decimals="-5"
      id="c116841452"
      unitRef="USD">2800000</us-gaap:DebtInstrumentFaceAmount>
    <us-gaap:SecuredDebt
      contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember"
      decimals="-5"
      id="c116841458"
      unitRef="CAD">5900000</us-gaap:SecuredDebt>
    <us-gaap:SecuredDebt
      contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember"
      decimals="-5"
      id="c116841459"
      unitRef="USD">4300000</us-gaap:SecuredDebt>
    <us-gaap:DebtInstrumentInterestRateEffectivePercentage
      contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember"
      decimals="3"
      id="c116841460"
      unitRef="Pure">0.088</us-gaap:DebtInstrumentInterestRateEffectivePercentage>
    <us-gaap:DeferredFinanceCostsNet
      contextRef="i_2024-07-31_DebtInstrumentAxis-CanadianMortgageNoteMember"
      decimals="-5"
      id="c116841461"
      unitRef="USD">100000</us-gaap:DeferredFinanceCostsNet>
    <ppih:LesseeOperatingAndFinanceLeasesTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734979">
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;11&lt;/em&gt;&#160;- Leases&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The Company accounts for its leases under ASC &lt;em style="font: inherit;"&gt;842,&lt;/em&gt; &lt;i&gt;Leases&lt;/i&gt;.&#160;Under this guidance, arrangements meeting the definition of a lease are classified as operating or financing leases, and are recorded on the consolidated balance sheets.&#160;Operating leases are included in operating lease right-of-use (&#x201c;ROU&#x201d;) assets, operating lease liabilities short-term, and operating lease liabilities long-term&#160;in the Company's consolidated balance sheets. Finance leases are included in property, plant and equipment, current maturities of long-term debt, and long-term debt less current maturities in the Company's consolidated balance sheets.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;ROU assets represent the Company's right to use an underlying asset for the lease term and lease liabilities represent the Company's obligation to make lease payments arising from the lease calculated by discounting fixed lease payments over the lease term at the rate implicit in the lease or the Company&#x2019;s incremental borrowing rate.&#160; Lease liabilities are increased by interest and reduced by payments each period, and the ROU asset is amortized over the lease term.&#160; For operating leases, interest on the lease liability and the amortization of the ROU asset result in straight-line rent expense over the lease term.&#160; For finance leases, interest on the lease liability and the amortization of the ROU asset results in front-loaded expense over the lease term.&#160; Variable lease expenses are recorded when incurred.&#160;ROU assets and liabilities are recognized at the commencement date of the lease based on the present value of lease payments over the lease term.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;As most of the Company's leases do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at the commencement date in determining the present value of lease payments.&#160;The incremental borrowing rate is the rate of interest that the Company would have to pay to borrow on a collateralized basis over a similar term and amount equal to the lease payments in a similar economic environment.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;In calculating the ROU asset and lease liability, the Company elects to combine lease and non-lease components. Additionally, the Company excludes short-term leases having an initial term&#160;of &lt;em style="font: inherit;"&gt;12&lt;/em&gt; months or less in accordance with&#160;the new guidance as an accounting policy election,&#160;and recognizes rent expense on a straight-line basis over the lease term.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Operating Leases.&#160;&lt;/b&gt;&lt;/i&gt;In &lt;em style="font: inherit;"&gt; August 2020, &lt;/em&gt;the Company entered into a new lease in Abu Dhabi for land upon which the Company built a facility. The initial annual payments were approximately 1.2 million U.A.E. Dirhams (approximatel&lt;span style="background-color:#ffffff;"&gt;y $0.3&#160;&lt;/span&gt;million at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;), inclusive of rent, escalation clauses, and other common charges contained in the agreement. The lease expires in &lt;em style="font: inherit;"&gt; August 2050.&#160;&lt;/em&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;span style="background-color:#ffffff;"&gt;In &lt;em style="font: inherit;"&gt; March &lt;/em&gt;and &lt;em style="font: inherit;"&gt; December 2022, &lt;/em&gt;the Company served&#160;Notices of Termination to its lessor for the Company's lease of land and buildings in Fujairah in the U.A.E.&#160;The Company served the Notices of Termination in connection with the Company's intended relocation to a different facility in Abu Dhabi. The Company vacated portions of the leased space in &lt;em style="font: inherit;"&gt; December 2022 &lt;/em&gt;and expects&#160;to vacate the remaining space in &lt;em style="font: inherit;"&gt; December 2024. &lt;/em&gt;The &lt;em style="font: inherit;"&gt;first&lt;/em&gt; Notice of Termination required that the Company pay an additional amount equal to &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months' rent after that termination to enable the lessor to prepare the assets for lease by another party.&#160;As a result of the termination, the Company has recognized adjustments to the amounts recorded in the consolidated financial statements as of &lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;. The termination resulted in decreases of $0.4&#160;million, $6.0 million and $5.5&#160;million to operating lease liability short-term, operating lease liability long-term and operating lease right-of-use asset, respectively, in the consolidated balance sheets as of &lt;/span&gt;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&lt;span style="background-color:#ffffff;"&gt;.&#160;There were &lt;em style="font: inherit;"&gt;no&lt;/em&gt; other adjustments in connection with these terminations for the year ended &lt;em style="font: inherit;"&gt; January 31, 2024, &lt;/em&gt;or during the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&#160;&lt;/span&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;At &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company had total operating lease liabilities of &lt;span style="background-color:#ffffff"&gt;$7.7&#160;&lt;/span&gt;million&#160;and operating ROU assets of &lt;span style="background-color:#ffffff"&gt;$6.9&lt;/span&gt;&lt;span style="background-color:#ffffff"&gt;&#160;million&lt;/span&gt;, which are reflected in the consolidated balance sheets.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;i&gt;&lt;b&gt;Finance Leases.&#160;&lt;/b&gt;&lt;/i&gt;The Company has several lease agreements, with lease terms of &lt;span style="-sec-ix-hidden:c116841494"&gt;one&lt;/span&gt; to &lt;span style="-sec-ix-hidden:c116841495"&gt;thirty&lt;/span&gt;&#160;years, which consist of real estate, vehicles and office equipment leases. These leases do &lt;em style="font: inherit;"&gt;not&lt;/em&gt; require any contingent rental payments, impose any financial restrictions or contain any residual value guarantees.&#160; Certain of the Company&#x2019;s leases include renewal options and escalation clauses; renewal options have &lt;em style="font: inherit;"&gt;not&lt;/em&gt; been included in the calculation of the lease liabilities and ROU&#160;assets as the Company is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; reasonably certain to exercise the options.&#160; The Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; have any arrangements where it acts as a lessor.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;At&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, the Company also had finance lease liabilities of $0.1&#160;million included in current maturities of long-term debt and long-term debt less current maturities, and financial ROU assets of $0.3&#160;million which were included in property plant and equipment, net of accumulated depreciation in the consolidated balance sheets.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Supplemental balance sheet information related to leases is as follows:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Operating and Finance leases&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Finance leases assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Property and Equipment - gross&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;970&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(595&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(536&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and Equipment - net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;347&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;434&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Finance lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finance lease liability short-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;113&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Finance lease liability long-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;62&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total finance lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;113&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Operating lease assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Operating lease ROU assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;6,938&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;6,467&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Operating lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Operating lease liability short-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;965&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;914&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Operating lease liability long-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,689&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Total operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,654&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Total lease costs consist of the following:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 18.8%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Lease costs&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 33.2%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Consolidated Statements of Operations Classification&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Finance Lease Costs&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Amortization of ROU assets&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;37&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;33&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Interest on lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Interest expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Operating lease costs&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales, SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;438&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;426&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;893&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;882&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Short-term lease costs (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales, SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;93&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;236&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;245&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Sub-lease income&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(20&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Total Lease costs&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;570&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;501&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,207&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,179&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;(&lt;em style="font: inherit;"&gt;1&lt;/em&gt;)&#160;Includes variable lease costs, which are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; material.&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&#160;&lt;/p&gt;


   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Supplemental cash flow information related to leases is&#160;as follows:&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="7" rowspan="1" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Financing cash outflows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;154&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating cash outflows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating cash outflows from operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,045&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;890&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;&lt;b&gt;ROU assets obtained in exchange for new lease obligations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Operating leases liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;1,041&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,484&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Weighted-average lease terms and discount rates are as follows:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Weighted-average remaining lease terms (in years):&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2.8&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;12.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Weighted-average discount rates:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;10.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Maturities of lease liabilities&#160;as of &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;, are&#160;as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the six months ending January 31, 2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,012&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,993&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;33&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,980&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,963&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2029&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,617&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2030&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;612&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,982&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Total lease payments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16,159&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Less: amount representing interest&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,505&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total lease liabilities at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,654&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;Rent expense on operating leases, which is recorded on straight-line basis, was&#160;$0.6&#160;&lt;span style="background-color:#ffffff;"&gt;million&lt;/span&gt;&lt;span style="background-color:#ffffff;"&gt;&#160;&lt;/span&gt;for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;and &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, respectively.&lt;/p&gt;
  </ppih:LesseeOperatingAndFinanceLeasesTextBlock>
    <ppih:LesseeOperatingLeaseAnnualPayment
      contextRef="d_2023-02-01_2024-01-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"
      decimals="-5"
      id="c116841482"
      unitRef="AED">1200000</ppih:LesseeOperatingLeaseAnnualPayment>
    <ppih:LesseeOperatingLeaseAnnualPayment
      contextRef="d_2024-02-01_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"
      decimals="-5"
      id="c116841483"
      unitRef="USD">300000</ppih:LesseeOperatingLeaseAnnualPayment>
    <ppih:DecreaseInOperatingLeaseLiabilityCurrent
      contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"
      decimals="-5"
      id="c116841486"
      unitRef="USD">400000</ppih:DecreaseInOperatingLeaseLiabilityCurrent>
    <ppih:DecreaseInOperatingLeaseLiabilityNoncurrent
      contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"
      decimals="-6"
      id="c116841487"
      unitRef="USD">6000000</ppih:DecreaseInOperatingLeaseLiabilityNoncurrent>
    <ppih:DecreaseInOperatingLeaseRightofuseAsset
      contextRef="i_2024-07-31_LeaseContractualTermAxis-AbuDhabiLandLeaseMember"
      decimals="-5"
      id="c116841488"
      unitRef="USD">5500000</ppih:DecreaseInOperatingLeaseRightofuseAsset>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841492"
      unitRef="USD">7700000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841493"
      unitRef="USD">6900000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841500"
      unitRef="USD">100000</us-gaap:FinanceLeaseLiability>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2024-07-31"
      decimals="-5"
      id="c116841501"
      unitRef="USD">300000</us-gaap:FinanceLeaseRightOfUseAsset>
    <ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734980">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Operating and Finance leases&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Finance leases assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Property and Equipment - gross&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;942&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;970&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Accumulated depreciation and amortization&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(595&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(536&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Property and Equipment - net&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;347&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;434&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Finance lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; margin-left: 9pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 9pt; text-indent: -9pt;"&gt;Finance lease liability short-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;113&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Finance lease liability long-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;62&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt; text-indent: -9pt;"&gt;Total finance lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;113&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Operating lease assets:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Operating lease ROU assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;6,938&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;6,467&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;Operating lease liabilities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Operating lease liability short-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;965&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;914&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0pt;"&gt;Operating lease liability long-term&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,689&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Total operating lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,654&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </ppih:SupplementalBalanceSheetInformationRelatedToLeasesTableTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-3"
      id="c116841532"
      unitRef="USD">942000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-4"
      id="c116841533"
      unitRef="USD">970000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-3"
      id="c116841534"
      unitRef="USD">595000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-3"
      id="c116841535"
      unitRef="USD">536000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2024-07-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-3"
      id="c116841536"
      unitRef="USD">347000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2024-01-31_PropertyPlantAndEquipmentByTypeAxis-FinanceLeasesAssetsMember"
      decimals="-3"
      id="c116841537"
      unitRef="USD">434000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841539"
      unitRef="USD">32000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841540"
      unitRef="USD">113000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841541"
      unitRef="USD">62000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841542"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841543"
      unitRef="USD">94000</us-gaap:FinanceLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841544"
      unitRef="USD">113000</us-gaap:FinanceLeaseLiability>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841546"
      unitRef="USD">6938000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841547"
      unitRef="USD">6467000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841549"
      unitRef="USD">965000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841550"
      unitRef="USD">914000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841551"
      unitRef="USD">6689000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116841552"
      unitRef="USD">6270000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841553"
      unitRef="USD">7654000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841554"
      unitRef="USD">7184000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LeaseCostTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734981">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="finHeading GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 18.8%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;b&gt;Lease costs&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 33.2%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Consolidated Statements of Operations Classification&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class="GFJY4-DGU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition" style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Finance Lease Costs&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Amortization of ROU assets&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;37&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;33&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;75&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Interest on lease liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Interest expense&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Operating lease costs&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales, SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;438&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;426&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;893&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;882&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Short-term lease costs (1)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Cost of sales, SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;93&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;59&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;236&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;245&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Sub-lease income&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;SG&amp;amp;A expenses&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(20&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td colspan="2" style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&lt;em style="font: inherit;"&gt;Total Lease costs&lt;/em&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;570&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;501&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,207&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1,179&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:LeaseCostTableTextBlock>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841567"
      unitRef="USD">37000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841568"
      unitRef="USD">33000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841569"
      unitRef="USD">75000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseRightOfUseAssetAmortization
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841570"
      unitRef="USD">87000</us-gaap:FinanceLeaseRightOfUseAssetAmortization>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841572"
      unitRef="USD">2000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841573"
      unitRef="USD">3000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841574"
      unitRef="USD">3000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:FinanceLeaseInterestExpense
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841575"
      unitRef="USD">5000</us-gaap:FinanceLeaseInterestExpense>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841577"
      unitRef="USD">438000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841578"
      unitRef="USD">426000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841579"
      unitRef="USD">893000</us-gaap:OperatingLeaseCost>
    <us-gaap:OperatingLeaseCost
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841580"
      unitRef="USD">882000</us-gaap:OperatingLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841582"
      unitRef="USD">93000</us-gaap:ShortTermLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841583"
      unitRef="USD">59000</us-gaap:ShortTermLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841584"
      unitRef="USD">236000</us-gaap:ShortTermLeaseCost>
    <us-gaap:ShortTermLeaseCost
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841585"
      unitRef="USD">245000</us-gaap:ShortTermLeaseCost>
    <us-gaap:SubleaseIncome
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841587"
      unitRef="USD">-0</us-gaap:SubleaseIncome>
    <us-gaap:SubleaseIncome
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-4"
      id="c116841588"
      unitRef="USD">20000</us-gaap:SubleaseIncome>
    <us-gaap:SubleaseIncome
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841589"
      unitRef="USD">-0</us-gaap:SubleaseIncome>
    <us-gaap:SubleaseIncome
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116841590"
      unitRef="USD">40000</us-gaap:SubleaseIncome>
    <us-gaap:LeaseCost
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-4"
      id="c116841592"
      unitRef="USD">570000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2023-05-01_2023-07-31"
      decimals="-3"
      id="c116841593"
      unitRef="USD">501000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841594"
      unitRef="USD">1207000</us-gaap:LeaseCost>
    <us-gaap:LeaseCost
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841595"
      unitRef="USD">1179000</us-gaap:LeaseCost>
    <ppih:SupplementalCashFlowInformationRelatedLeasesTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734982">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="7" rowspan="1" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended July 31,&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Financing cash outflows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;154&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating cash outflows from finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;3&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating cash outflows from operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,045&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;890&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 70%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;&lt;b&gt;ROU assets obtained in exchange for new lease obligations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 9pt;"&gt;Operating leases liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;1,041&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;3,484&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </ppih:SupplementalCashFlowInformationRelatedLeasesTableTextBlock>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841603"
      unitRef="USD">16000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841604"
      unitRef="USD">154000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841606"
      unitRef="USD">3000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:FinanceLeaseInterestPaymentOnLiability
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841607"
      unitRef="USD">5000</us-gaap:FinanceLeaseInterestPaymentOnLiability>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841609"
      unitRef="USD">1045000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-4"
      id="c116841610"
      unitRef="USD">890000</us-gaap:OperatingLeasePayments>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2024-02-01_2024-07-31"
      decimals="-3"
      id="c116841613"
      unitRef="USD">1041000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability
      contextRef="d_2023-02-01_2023-07-31"
      decimals="-3"
      id="c116841614"
      unitRef="USD">3484000</us-gaap:RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability>
    <ppih:WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734983">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: Times New Roman; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Weighted-average remaining lease terms (in years):&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2.8&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;12.7&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt;"&gt;&lt;b&gt;Weighted-average discount rates:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Finance leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;6.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin: 0pt 0pt 0pt 18pt;"&gt;Operating leases&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;10.4&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </ppih:WeightedaverageLeaseTermsAndDiscountRatesTableTextBlock>
    <us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2024-07-31" id="c116841618">P2Y9M18D</us-gaap:FinanceLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 contextRef="i_2024-07-31" id="c116841619">P12Y8M12D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2024-07-31"
      decimals="3"
      id="c116841621"
      unitRef="Pure">0.064</us-gaap:FinanceLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i_2024-07-31"
      decimals="3"
      id="c116841622"
      unitRef="Pure">0.104</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <ppih:FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734984">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Operating Leases&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Finance Leases&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the six months ending January 31, 2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,012&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;16&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2026&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,993&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;33&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2027&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,980&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;36&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2028&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,963&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2029&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;1,617&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;For the year ended January 31, 2030&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;612&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;6,982&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;"&gt;Total lease payments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16,159&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Less: amount representing interest&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 1px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(8,505&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px;"&gt; &lt;p style="margin: 0pt; font-size: 10pt; font-family: Times New Roman;"&gt;Total lease liabilities at July 31, 2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px 0px 3px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,654&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;94&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-top: 0px; padding-right: 0px; padding-left: 0px; margin: 0px; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </ppih:FinanceAndOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841625"
      unitRef="USD">1012000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear>
    <us-gaap:FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841626"
      unitRef="USD">16000</us-gaap:FinanceLeaseLiabilityPaymentsRemainderOfFiscalYear>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841627"
      unitRef="USD">1993000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841628"
      unitRef="USD">33000</us-gaap:FinanceLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2024-07-31"
      decimals="-4"
      id="c116841629"
      unitRef="USD">1980000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841630"
      unitRef="USD">36000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841631"
      unitRef="USD">1963000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841632"
      unitRef="USD">9000</us-gaap:FinanceLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841633"
      unitRef="USD">1617000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841634"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841635"
      unitRef="USD">612000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841636"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841637"
      unitRef="USD">6982000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841638"
      unitRef="USD">0</us-gaap:FinanceLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841639"
      unitRef="USD">16159000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:FinanceLeaseLiabilityPaymentsDue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841640"
      unitRef="USD">94000</us-gaap:FinanceLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841641"
      unitRef="USD">8505000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841642"
      unitRef="USD">-0</us-gaap:FinanceLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:OperatingLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841643"
      unitRef="USD">7654000</us-gaap:OperatingLeaseLiability>
    <us-gaap:FinanceLeaseLiability
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841644"
      unitRef="USD">94000</us-gaap:FinanceLeaseLiability>
    <us-gaap:OperatingLeaseExpense
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-5"
      id="c116841508"
      unitRef="USD">600000</us-gaap:OperatingLeaseExpense>
    <us-gaap:CashAndCashEquivalentsDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734985">
   &lt;p style="text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;12&lt;/em&gt;&#160;- Restricted cash&lt;/b&gt;&lt;/p&gt;
   &lt;p style="text-align: justify; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;div style="font-size:10pt"&gt;
    &lt;div style="font-family:Times New Roman"&gt;
      Restricted cash held by foreign subsidiaries is related to fixed deposits that also serve as security deposits and guarantees:&#160;
    &lt;/div&gt;
    &lt;div style="font-family:Times New Roman"&gt;
      &#160;
    &lt;/div&gt;
    &lt;div style="font-family:Times New Roman"&gt;

      &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9,455&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Restricted cash&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,426&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,395&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cash, cash equivalents and restricted cash shown in the statement of cash flows&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,881&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,240&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

     &lt;p style="margin: 0pt; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif;"&gt;&#160;&lt;/p&gt;
    &lt;/div&gt;
   &lt;/div&gt;

   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left"&gt;&#160;&lt;/p&gt;
  </us-gaap:CashAndCashEquivalentsDisclosureTextBlock>
    <us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734986">
      &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;July 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;January 31, 2024&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 70%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;9,455&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Restricted cash&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,426&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,395&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Cash, cash equivalents and restricted cash shown in the statement of cash flows&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;10,881&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;7,240&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
     </us-gaap:ScheduleOfRestrictedCashAndCashEquivalentsTextBlock>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841649"
      unitRef="USD">9455000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841650"
      unitRef="USD">5845000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841651"
      unitRef="USD">1426000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:RestrictedCashAndCashEquivalents
      contextRef="i_2024-01-31"
      decimals="-3"
      id="c116841652"
      unitRef="USD">1395000</us-gaap:RestrictedCashAndCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i_2024-07-31"
      decimals="-3"
      id="c116841653"
      unitRef="USD">10881000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i_2024-01-31"
      decimals="-4"
      id="c116841654"
      unitRef="USD">7240000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:FairValueDisclosuresTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734987">
   &lt;p style="font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; margin: 0pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;13&lt;/em&gt;&#160;- Fair value &lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: justify; font-family: Times New Roman; font-size: 10pt;"&gt;The carrying values of cash and cash equivalents, accounts receivable and accounts payable are considered reasonable estimates of fair value due to their short-term nature. The carrying amount of the Company's short-term debt, revolving lines of credit and long-term debt approximate fair value because&#160;the majority of the amounts outstanding accrue interest at variable market rates.&lt;/p&gt;
  </us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734988">
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;14&lt;/em&gt;&#160;- Recent accounting pronouncements&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;In &lt;em style="font: inherit;"&gt; November 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;-&lt;em style="font: inherit;"&gt;07,&lt;/em&gt; &lt;i&gt;Segment Reporting&lt;/i&gt; (&lt;i&gt;Topic &lt;em style="font: inherit;"&gt;280&lt;/em&gt;&lt;/i&gt;): &lt;i&gt;Improvements to Reportable Segment Disclosures&lt;/i&gt;. The standard update requires additional disclosures, including further details about segment expenses regarding a public entity's reportable segments on an annual and interim basis. The additional segment disclosures are effective for fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2023, &lt;/em&gt;and interim periods within fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2024. &lt;/em&gt;The Company is still evaluating the impact of these updated disclosure requirements on its statement of financial position or results of operations.&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;In &lt;em style="font: inherit;"&gt; December 2023, &lt;/em&gt;the FASB issued ASU &lt;em style="font: inherit;"&gt;No.&lt;/em&gt; &lt;em style="font: inherit;"&gt;2023&lt;/em&gt;-&lt;em style="font: inherit;"&gt;09,&lt;/em&gt; &lt;i&gt;Income Taxes&lt;/i&gt; (&lt;i&gt;Topic &lt;em style="font: inherit;"&gt;740&lt;/em&gt;&lt;/i&gt;): &lt;i&gt;Improvements to Income Tax Disclosures&lt;/i&gt;. Pursuant to this standard update, companies are required to provide additional information which is&#160;primarily attributable to the rate reconciliation and income taxes paid. The new income tax disclosures are effective for fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2024. &lt;/em&gt;The Company is still evaluating&#160;this standard update&#160;but does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; expect it to have a material impact on its statement of financial position or results of operations.&lt;/p&gt;
  </us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:TreasuryStockTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734989">
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;15&lt;/em&gt;&#160;- Treasury stock&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; font-family: Times New Roman; font-size: 10pt; text-align: justify;"&gt;The repurchase program approved on &lt;em style="font: inherit;"&gt; October 4, 2021 &lt;/em&gt;authorized the Company to use up to&#160;$3.0&#160;million&#160;for the purchase of its outstanding shares of common stock. Stock&#160;repurchases were permitted to be executed through open market or privately negotiated transactions, depending upon&#160;current market conditions and other factors. On &lt;em style="font: inherit;"&gt; December 7, 2022 &lt;/em&gt;the Board of Directors authorized the use of $1.0 million&#160;remaining under the share repurchase program previously approved on &lt;em style="font: inherit;"&gt; October 4, 2021 &lt;/em&gt;that expired on &lt;em style="font: inherit;"&gt; October 3, 2022. &lt;/em&gt;During the &lt;em style="font: inherit;"&gt;twelve&lt;/em&gt;&#160;months ended&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, the Company used the remaining $1.0 million authorized to repurchase its outstanding shares of common stock. Accordingly, t&lt;span style="background-color:#ffffff;"&gt;here was no repurchase activity with respect to the Company's shares of common stock during the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&lt;/span&gt;&lt;/p&gt;
  </us-gaap:TreasuryStockTextBlock>
    <srt:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i_2021-10-04"
      decimals="-6"
      id="c116841667"
      unitRef="USD">3000000</srt:StockRepurchaseProgramAuthorizedAmount1>
    <srt:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i_2022-12-07"
      decimals="-6"
      id="c116841668"
      unitRef="USD">1000000</srt:StockRepurchaseProgramAuthorizedAmount1>
    <ppih:StockRepurchaseProgramAuthorizedRepurchaseAmountUsed
      contextRef="i_2024-01-31"
      decimals="-6"
      id="c116841670"
      unitRef="USD">1000000</ppih:StockRepurchaseProgramAuthorizedRepurchaseAmountUsed>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="d_2024-05-01_2024-07-31"
      decimals="-3"
      id="c116841671"
      unitRef="Share">0</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:MinorityInterestDisclosureTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734990">
   &lt;p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;16&lt;/em&gt;&#160;- Noncontrolling interest&lt;/b&gt;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"&gt;On &lt;em style="font: inherit;"&gt; June 1, 2023, &lt;/em&gt;the Company closed on its formation of a&#160;joint venture ("the JV", and the agreement governing the JV, "the JV Agreement")&#160;with Gulf Insulation Group ("GIG"), a leading provider of pre-insulated piping systems and pipe fabrication, in which the Company acquired a 60% controlling financial interest and contributed assets consisting of a building and equipment.&#160;The JV is a limited liability company named Perma Pipe Gulf Arabia Industry and&#160;is a closed joint stock company established under the laws of the Kingdom of Saudi Arabia. The JV's&#160;capital is comprised of ordinary shares with 60% owned by the Company and remaining 40% owned by GIG. The Company expects this collaborative business arrangement to result in expanding its market presence in Saudi Arabia, Kuwait, and Bahrain. The primary business activities of the JV include the manufacture and sale of the pre-insulated piping systems and pipe coating services. GIG acquired its&#160;40% non-controlling interest by contributing assets to the JV&#160;of approximately $6.8&#160;million in fair value, mainly consisting of an idle building and equipment. The fair value of the net assets contributed was determined through the use of a &lt;em style="font: inherit;"&gt;third&lt;/em&gt;-party appraiser using the indirect cost method.&lt;/p&gt;
   &lt;div style="font-size: 10pt; margin: 0pt;"&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;Pursuant to the applicable guidance in ASC &lt;em style="font: inherit;"&gt;805,&lt;/em&gt; &lt;i&gt;Business Combinations and Noncontrolling Interests&lt;/i&gt;, the Company determined that the transaction did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; meet the necessary conditions to be considered a business as the set of assets acquired did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; contain an organized workforce and therefore was recorded as an asset acquisition. The assets transferred by the Company to the JV were recorded at historical cost, and &lt;em style="font: inherit;"&gt;no&lt;/em&gt; gain was recognized as a result of this exchange due&#160;to the Company having&#160;a controlling interest in the JV. The Company&#x2019;s measurement of the acquired assets is comprised of the fair value of the contributed net assets given up by the Company and the fair value of the non-controlling interest excluding the contributed assets. The non-controlling interest attributable to the other party was recorded as of the investment date and was measured as part of the carrying amount of the ownership interest in the net assets given up by the Company plus the fair value of the non-controlling interest excluding the contributed assets. &lt;em style="font: inherit;"&gt;No&lt;/em&gt; gain or loss was recognized as a result of this exchange. The Company also assumed a promissory note payable to GIG&#160;issued as part of the formation of the JV in the principal amount of $2.8&#160;million. The principal amount is presented within the Long-term debt, less current maturities caption in the Company's consolidated balance sheets.&#160;The Company also has a promissory note due from the JV that was issued as part of the formation of the JV in the amount of approximately $4.2&#160;million and&#160;eliminates in consolidation.&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The Company has a 60% controlling financial interest in the JV&#160;which is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; considered a wholly owned subsidiary. Accordingly, there remains a minority portion of the equity interest that is owned by a &lt;em style="font: inherit;"&gt;third&lt;/em&gt; party, GIG. Pursuant to the applicable guidance contained in ASC &lt;em style="font: inherit;"&gt;810,&lt;/em&gt; &lt;i&gt;Consolidations&lt;/i&gt;, the balance sheets&#160;and operating activities of this investment are&#160;included in the Company's consolidated financial statements. T&lt;span style="background-color:#ffffff;"&gt;he carrying amount of the assets and liabilities of the JV that are consolidated by the Company totaled $26.4&#160;million&#160;and $15.5&#160;million, respectively, as of&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;.&lt;/span&gt;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The Company adjusts net income in the consolidated statements of operations to exclude the proportionate share of results that is attributable to the non-controlling interest. Additionally, the Company presents the proportionate share that is attributable to the redeemable non-controlling interest as temporary equity within the consolidated balance sheets. This mezzanine presentation is the result of the non-controlling interest being subject to a put option that is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; solely within the Company's control and in connection with the equity shares of the business arrangement that is redeemable at any time after &lt;em style="font: inherit;"&gt;five&lt;/em&gt; years following the date of formation. The redemption amount per the JV Agreement is&#160;at fair value of the non-controlling interest which represents the fair value of ordinary shares of the JV that are&#160;owned by GIG. Further, neither the call option nor put option contained in the JV Agreement met the definition of a derivative as a result of &lt;em style="font: inherit;"&gt;not&lt;/em&gt; containing a net settlement provision and the shares &lt;em style="font: inherit;"&gt;not&lt;/em&gt; being readily convertible to cash, thereby being considered embedded with respect to non-controlling interest and &lt;em style="font: inherit;"&gt;not&lt;/em&gt; a freestanding instrument.&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;As a result of the non-controlling interest being subject to redemption rights that are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; entirely within the Company's control, it was concluded that the necessary conditions were met to be accounted for in accordance with ASC &lt;em style="font: inherit;"&gt;480,&lt;/em&gt; &lt;i&gt;Distinguishing Liabilities from Equity&lt;/i&gt;. Pursuant to this accounting standard, the Company determined that the only criteria for the security&#160;to become redeemable is the passage of time and, therefore, is considered probable of redemption. The Company made a policy election to measure changes in the non-controlling interest immediately as they occur and adjust the carrying amount of non-controlling interest equal to its redemption amount as the non-controlling interest has &lt;em style="font: inherit;"&gt;no&lt;/em&gt; stated fixed price or fixed date. As such, at each subsequent balance sheet date following the formation of the JV,&#160;the Company must determine whether further adjustment is required&#160;to increase the carrying value of the redeemable non-controlling interest. If the Company determines that the fair value of the redeemable non-controlling interest exceeds its carrying value, an adjustment is made to reflect this change. However, if the value is determined to be less than its carrying value, such&#160;adjustment is limited to its original carrying value at the formation of the&#160;business arrangement. Additionally, adjustments made to reflect the change&#160;in the value of the redeemable non-controlling interest are offset&#160;against&#160;permanent&#160;equity within the Company's consolidated balance sheets.&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;Net income attributable to GIG was&#160;$1.0&#160;million and $0.1&#160;million for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt;&#160;months ended&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, respectively. Net income attributable to GIG was $1.3&#160;million and $0.1&#160;million for the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt;&#160;and&#160;&lt;em style="font: inherit;"&gt;2023&lt;/em&gt;, respectively. The proportionate share of net income was accounted for as a reduction in deriving net income attributable to common stock in the Company's consolidated statements of operations.&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The Company is the ultimate parent of the JV through its &lt;em style="font: inherit;"&gt;60%&lt;/em&gt; controlling financial interest and as part of the JV Agreement&#160;majority control of the operational activities of the JV and&#160;&lt;em style="font: inherit;"&gt;no&lt;/em&gt; joint control exists. The JV Agreement has &lt;em style="font: inherit;"&gt;no&lt;/em&gt; veto or kickout rights and board voting is proportional to the ownership interest. Certain activities do include a &lt;em style="font: inherit;"&gt;two&lt;/em&gt;-thirds majority affirmative vote of shareholders of the JV and include acquiring another company, establishing new subsidiaries, entering another partnership or joint venture, engaging in any merger or materially changing&#160;the business of the JV. These are considered protective rights. The &lt;em style="font: inherit;"&gt;60%&lt;/em&gt; equity ownership of the JV by the Company allows it to receive its proportionate share of losses and residual returns.&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
    &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;The non-controlling interest as measured at fair value was&#160;$8.1&#160;million and $6.3&#160;million, and was&#160;recorded within temporary equity at&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively. The change in non-controlling interest consists of $1.3&#160;million in current year net income attributable to non-controlling interest, and approximately $0.5&#160;million as an adjustment in the carrying value of the redeemable non-controlling interest pertaining to the business arrangement. In addition, there were &lt;em style="font: inherit;"&gt;no&lt;/em&gt; dividends or any other form of distributions from non-controlling interest for the period ended&#160;&lt;em style="font: inherit;"&gt; July 31, 2024&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt; January 31, 2024&lt;/em&gt;, respectively.&#160;&lt;/p&gt;
   &lt;/div&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; margin: 0pt; text-align: left;"&gt;&#160;&lt;/p&gt;


  </us-gaap:MinorityInterestDisclosureTextBlock>
    <us-gaap:MinorityInterestOwnershipPercentageByParent
      contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember"
      decimals="1"
      id="c116841677"
      unitRef="Pure">0.60</us-gaap:MinorityInterestOwnershipPercentageByParent>
    <us-gaap:MinorityInterestOwnershipPercentageByParent
      contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember"
      decimals="1"
      id="c116841678"
      unitRef="Pure">0.60</us-gaap:MinorityInterestOwnershipPercentageByParent>
    <us-gaap:MinorityInterestOwnershipPercentageByParent
      contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember"
      decimals="1"
      id="c116841679"
      unitRef="Pure">0.40</us-gaap:MinorityInterestOwnershipPercentageByParent>
    <us-gaap:MinorityInterestOwnershipPercentageByParent
      contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember"
      decimals="1"
      id="c116841680"
      unitRef="Pure">0.40</us-gaap:MinorityInterestOwnershipPercentageByParent>
    <us-gaap:PropertyPlantAndEquipmentFairValueDisclosure
      contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_OwnershipAxis-JointVentureMember"
      decimals="-5"
      id="c116841681"
      unitRef="USD">6800000</us-gaap:PropertyPlantAndEquipmentFairValueDisclosure>
    <us-gaap:NotesPayable
      contextRef="i_2023-06-01_LegalEntityAxis-GulfInsulationGroupMember_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-5"
      id="c116841688"
      unitRef="USD">2800000</us-gaap:NotesPayable>
    <us-gaap:NotesReceivableNet
      contextRef="i_2023-06-01_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-5"
      id="c116841689"
      unitRef="USD">4200000</us-gaap:NotesReceivableNet>
    <us-gaap:MinorityInterestOwnershipPercentageByParent
      contextRef="i_2023-06-01_OwnershipAxis-JointVentureMember"
      decimals="1"
      id="c116841690"
      unitRef="Pure">0.60</us-gaap:MinorityInterestOwnershipPercentageByParent>
    <us-gaap:Assets
      contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-5"
      id="c116841694"
      unitRef="USD">26400000</us-gaap:Assets>
    <us-gaap:Liabilities
      contextRef="i_2024-07-31_RelatedPartyTransactionsByRelatedPartyAxis-RelatedPartyMember"
      decimals="-5"
      id="c116841695"
      unitRef="USD">15500000</us-gaap:Liabilities>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2024-05-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-6"
      id="c116841704"
      unitRef="USD">1000000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2023-05-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841705"
      unitRef="USD">100000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841708"
      unitRef="USD">1300000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2023-02-01_2023-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841709"
      unitRef="USD">100000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount
      contextRef="i_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841717"
      unitRef="USD">8100000</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
    <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount
      contextRef="i_2024-01-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841718"
      unitRef="USD">6300000</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
    <us-gaap:NetIncomeLossAttributableToNoncontrollingInterest
      contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841719"
      unitRef="USD">1300000</us-gaap:NetIncomeLossAttributableToNoncontrollingInterest>
    <us-gaap:NoncontrollingInterestIncreaseFromBusinessCombination
      contextRef="d_2024-02-01_2024-07-31_ConsolidatedEntitiesAxis-GulfInsulationGroupMember"
      decimals="-5"
      id="c116841720"
      unitRef="USD">500000</us-gaap:NoncontrollingInterestIncreaseFromBusinessCombination>
    <ecd:MtrlTermsOfTrdArrTextBlock contextRef="d_2024-02-01_2024-07-31" id="c2734991">
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;a href="#" id="partii"&gt;&lt;/a&gt;PART II &lt;span style="-sec-ix-hidden:c116841723"&gt;&lt;span style="-sec-ix-hidden:c116841724"&gt;&lt;span style="-sec-ix-hidden:c116841725"&gt;&lt;span style="-sec-ix-hidden:c116841726"&gt;OTHER&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; INFORMATION&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </ecd:MtrlTermsOfTrdArrTextBlock>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#c116841585"
          xlink:label="c116841585"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c116841582"
          xlink:label="c116841582"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c116841584"
          xlink:label="c116841584"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#c116841583"
          xlink:label="c116841583"
          xlink:type="locator"/>
        <link:footnote id="fee3b38f4-eb44-40dd-9944-816fbb79d197" xlink:label="fee3b38f4-eb44-40dd-9944-816fbb79d197" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-us">Includes variable lease costs, which are not material.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c116841585"
          xlink:to="fee3b38f4-eb44-40dd-9944-816fbb79d197"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c116841582"
          xlink:to="fee3b38f4-eb44-40dd-9944-816fbb79d197"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c116841584"
          xlink:to="fee3b38f4-eb44-40dd-9944-816fbb79d197"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="c116841583"
          xlink:to="fee3b38f4-eb44-40dd-9944-816fbb79d197"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
