a:6:{i:0;s:12724:"				<div class="h1"><h1>Andaman and Nicobar Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.andamanswagat.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.andamanswagat.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Andaman and Nicobar Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair, Havelock</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanswagat.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman and Nicobar Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="100603"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_12/352228/169146.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/352228/169146.jpg"  width="150" height="150"    alt="Andaman and Nicobar Tour" title="Andaman and Nicobar Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Port Blair
								</p>
								<p class="aj">Our representative will meet and assist you at the Veer Savarkar Airport. Board the waiting vehicles, drive to your hotel and check in. First half of the day is at leisure. Later in the afternoon visit Cellular jail followed by light and sound show. The Cellular Jail has a pride of place in India’s freedom struggle. Many a stalwart were imprisoned here. Declared a national memorial, this three storey prison constructed by Britishers in 1906, is a pilgrimage destination for freedom fighters. This colossal edifice has mutely witnessed the most treacherous of inhumane atrocities borne by the convicts, who were mostly freedom fighters. The day draws to a gentle close with the Sound and Light Show at the historic Cellular Jail which gives you a vivid experience of its strong association with the freedom fighters and their struggle for independence. Overnight stay at respective Hotel / Resort at Port Blair. (Note- Cellular jail is closed on every Monday and national Holidays, visit to Cellular jail and Museum closes by 1600hrs and light n sound show is Open every day 1800hrs)</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Port Blair
								</p>
								<p class="aj">Limestone caves Early morning starts your trip to Baratang, it’s about 120kms from Port Blair and travel time is 3hours and 30mins due to speed restriction in tribal reserve area. Travel is amazing thorugh the dense rain forest which also berths one of the oldest tribe in the world called “ JARAWA” , although any interaction or exchange of any foreign articles / photography with them is strictly banned. On arrival at Baratang sightseeing to Lime stone cave by motor boat, something amazing b`cus this ride to is through dense mangrove forest ride and visit Mud Volcano by a local jeep. Overnight Stay at Baratang. (Evening visit to parrot island (Optional Activity on Direct payment basis )</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Baratang Island
								</p>
								<p class="aj">Ross & Smith Islands Early morning after breakfast, proceed for a trip to Diglipur North Andamans by road 325kms, Diglipur is the biggest island in Andaman group of Island and has lot to offer for tourist get transfer to Arial Bay Harbor to Take a Boat to visit to Ross n smith island - Ross And Smith Islands a twin island bridged by a Pristine white sandy beach what makes the perfect natures blessing a swimming pool lagoon at one side and a snorkeling paradise on the other, one can walk from one island to another during low tide , spend the day swimming on the beach. Overnight Stay at Diglipur.(Please Note Ross & Smith is Closed on Tuesday itinerary will be shuffled if the same trip falls on Tuesday )</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Diglipur
								</p>
								<p class="aj">Early morning Check Out from hotel proceed to Port blair Via Rangat En-route visit to Amkunj Beach at Rangat village., later vist to Mochidera Beach , Dhaninallah Beach Sumthing amazing bcoz this ride is through dense forset. Over Night Stay at Port Blair.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Port Blair To Havelock
								</p>
								<p class="aj">Radhanagar Beach After breakfast get transfer to Phoenix Bay Harbor to catch a ferry to Havelock. The Island (often just called Havelock) is one of the most beautiful and largest islands of Ritchie's Archipelago and is a placid heaven like no other. Situated 57 km north east of the South Andamans with an area of 92 Sq.Kms she offers a breathe taking trail of nature expeditions. The island is primarily populated by Bengali settlers. This picturesque Island with beautiful sandy beaches and lush green forest is also rated as the seventh most beautiful island in the world. It hosts two of the world’s most renowned beaches; Vijaynagar Beach and Radhanagar Beach. The Island also has the biggest concentration of breath-taking diving and snorkeling sites, thus acting as a paradise to marine world explorers. On arrival proceed to selected hotel. Stay here overnight amongst sandy beach and lush green forest in a comfortable beach resort. .( Note-This day your breakfast will be at Port Blair if you are traveling by a early morning ferry ask the Hotel to give a pack breakfast, Ferry timings is mentioned in the tickets provided to you please report 45minutes prior to departure with a valid photo id card – subjected to weather condition , Ferry Operation is purely Subjected to Govt clearance)</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Havelock
								</p>
								<p class="aj">Elephant Beach Trip to Elephant Beach3: Embark on the most memorable snorkeling trip, just 40 min by Boat this beach offers snorkelers calm blue shallow waters and is the perfect spot for beginner snorkelers. The boat goes right up to the beach and it’s so easy to slip on your gear and just start snorkeling. It’s also a great place to just spend the day lying on the beach and relaxing. The beach is very scenic with fallen trees and white sand giving the photographer some interesting shots. The reef here starts very close to shore at a depth of about 1 meter. The large reef is mostly made up of hard coral and has plenty of marine life. Note: Inclusive of snorkeling equipment and car pick up and drop to jetty. (Note: Inclusive of snorkeling equipment and car pick up and drop to jetty , incase of bad weather guest will be taken to lighthouse for snorkelling or a trip to Kalapathar beach will be provided )</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Radhanagar Beach
								</p>
								<p class="aj">After breakfast, the cab will be provided to pickup and drop guest to Beach No 7, Radhanagar beach rated as the best beach in Asia. Spend the day relaxing on this beach. Return to Port Blair as per ferry timings advised. Upon return from Havelock Island, transfer to Hotel. Overnight stay at respective Hotel / Resort at Port Blair. (Note- Ferry timings is mentioned in the tickets provided to you please report 45minutes prior to departure with a valid photo id card – subjected to weather condition)</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Departure
								</p>
								<p class="aj">Transfer to Airport and Departure with unlimited memories</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.andamanswagat.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman and Nicobar Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="100603"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Andaman and Nicobar Tour - 7 Nights / 8 Days Tour Packages";i:2;s:132:"book andaman and nicobar tour - 7 nights / 8 days tour packages, beach and islands tour packages, port blair, havelock tour packages";i:3;s:163:"Andaman Swagat offers Andaman and Nicobar Tour - 7 Nights / 8 Days tour package, budget Beach and Islands tour packages for Port Blair, Havelock at exciting price.";i:4;s:416:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair, Havelock"        
		                 },
		      "description": "",
		      "name": "Andaman and Nicobar Tour",
		      "telephone": "+91-9476028789"
		    }
		    </script>
			";i:5;N;}